2010-06-29 1 views

ответ

0

Вы можете «вид» делать то, что вы хотите с помощью Enumerable.Range метода:

if (Enumerable.Range(2, 8).Concat(new [] { 1, 12 }).Contains(number)) { 
    .... 
} 

Конечно, это не так читаемое как то, что вы можете найти в основном функциональном языке ...

1

.NET 2.0 (это то, что цели VS 2005) не имеет понятия Set.

.NET 3.5 введено HashSet<T> и .NET 4 введено SortedSet<T>.

Существует не буквальное форма для них, хотя - хотя коллекция Инициализаторы предоставить что-то немного подобное:

new HashSet<int> { 1, 2, 4, 12 } 

Конечно, вы могли просто использовать массив:

int[] values = { 1, 2, 5, 12 }; 

, но диапазон часть вашего образца - 2..10 - не существует в любой версии C#.

1

К сожалению, нет.

Однако, вы можете использовать Contains() метод в List<int>:

List<int> numbers = ... 
if (numbers.Contains(2)) { ... } 

если numbers является массивом, то вы можете инициализировать новый List<int> со значениями массива:

int[] numbers = { 1, 2, 3, 4 }; 
List<int> newList = new List<int>(numbers); 
if (newList.Contains(2)) { ... } 

или использование Array.Exists():

Array.Exists(numbers, delegate(int i) { return i == 2; }); 
+0

По мне там не был Linq доступен в C# 2.0 (VS2005). – XIII

+0

О, ты прав, я пропустил VS2005 ... –

 Смежные вопросы

  • Нет связанных вопросов^_^