Для C# в VS2005, вы можете сделать что-то вроде этого:C# в VS2005: есть ли обозначение стиля для целых чисел?
if number in [1,2..10,12] { ... }
, который будет проверять, если number
содержится в множестве, определяемом в квадратных скобках?
Для C# в VS2005, вы можете сделать что-то вроде этого:C# в VS2005: есть ли обозначение стиля для целых чисел?
if number in [1,2..10,12] { ... }
, который будет проверять, если number
содержится в множестве, определяемом в квадратных скобках?
Вы можете «вид» делать то, что вы хотите с помощью Enumerable.Range метода:
if (Enumerable.Range(2, 8).Concat(new [] { 1, 12 }).Contains(number)) {
....
}
Конечно, это не так читаемое как то, что вы можете найти в основном функциональном языке ...
.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#.
К сожалению, нет.
Однако, вы можете использовать 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; });
По мне там не был Linq доступен в C# 2.0 (VS2005). – XIII
О, ты прав, я пропустил VS2005 ... –