C#, эквивалентный для Delphi в

Что является эквивалентом в C# для Delphi в синтаксисе, как:


  if (iIntVar in [2,96]) then 
  begin
    //some code
  end;

Спасибо

10
задан Pascal 1 March 2010 в 16:02
поделиться

6 ответов

Я предпочитаю метод, подобный определенному здесь: Сравнение переменной с несколькими значениями

Вот преобразование сообщения Чада:

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
8
ответ дан 3 December 2019 в 18:33
поделиться

Нет такого эквивалента. Ближайшим из них является метод расширения Contains () коллекции.

Пример:

var vals = new int[] {2, 96};
if(vals.Contains(iIntVar))
{
  // some code
}
4
ответ дан 3 December 2019 в 18:33
поделиться

Вы можете создать этот метод расширения:

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)) { /* ... */ }
2
ответ дан 3 December 2019 в 18:33
поделиться

В .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
}
4
ответ дан 3 December 2019 в 18:33
поделиться

Вы можете написать метод расширения

 public static bool In(this int value, int[] range)
    {
        return (value >= range[0] && value <= range[1]);
    }
1
ответ дан 3 December 2019 в 18:33
поделиться

Чтобы расширить то, что Мейсон Уиллер написал в комментарии, это будет HashSet .Contains (в .NET 3.5).

int i = 96;
var set = new HashSet<int> { 2, 96 };

if (set.Contains(i))
{
   Console.WriteLine("Found!");
}
2
ответ дан 3 December 2019 в 18:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: