Что является эквивалентом в C# для Delphi в синтаксисе, как:
if (iIntVar in [2,96]) then
begin
//some code
end;
Спасибо
Я предпочитаю метод, подобный определенному здесь: Сравнение переменной с несколькими значениями
Вот преобразование сообщения Чада:
public static bool In(this T obj, params T[] arr)
{
return arr.Contains(obj);
}
И использование было бы
if (intVar.In(12, 42, 46, 74) )
{
//TODO: Something
}
или
if (42.In(x, y, z))
// do something
Нет такого эквивалента. Ближайшим из них является метод расширения Contains () коллекции.
Пример:
var vals = new int[] {2, 96};
if(vals.Contains(iIntVar))
{
// some code
}
Вы можете создать этот метод расширения:
public static class ExtensionMethods
{
public static bool InRange(this int val, int lower, int upper)
{
return val >= lower && val <= upper;
}
}
тогда вы можете сделать это:
int i = 56;
if (i.InRange(2, 96)) { /* ... */ }
В .Net, .Contains является наиболее близким, но синтаксис противоположен тому, что вы написали.
Вы можете написать метод расширения, чтобы иметь возможность создать метод .In
public static bool In<T>(this T obj, IEnumerable<T> arr)
{
return arr.Contains(obj);
}
И использование будет
if (42.In(new[] { 12, 42, 46, 74 }) )
{
//TODO: Something
}
Вы можете написать метод расширения
public static bool In(this int value, int[] range)
{
return (value >= range[0] && value <= range[1]);
}
Чтобы расширить то, что Мейсон Уиллер написал в комментарии, это будет HashSet
int i = 96;
var set = new HashSet<int> { 2, 96 };
if (set.Contains(i))
{
Console.WriteLine("Found!");
}