C # эквивалент для Delphi в - PullRequest
       30

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

10 голосов
/ 01 марта 2010

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


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

Спасибо

Ответы [ 6 ]

8 голосов
/ 01 марта 2010

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

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

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
4 голосов
/ 01 марта 2010

В .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 голосов
/ 01 марта 2010

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

Пример:

var vals = new int[] {2, 96};
if(vals.Contains(iIntVar))
{
  // some code
}
2 голосов
/ 01 марта 2010

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

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

if (set.Contains(i))
{
   Console.WriteLine("Found!");
}
2 голосов
/ 01 марта 2010

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

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)) { /* ... */ }
1 голос
/ 01 марта 2010

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

 public static bool In(this int value, int[] range)
    {
        return (value >= range[0] && value <= range[1]);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...