в операторе в C # - PullRequest
       26

в операторе в C #

7 голосов
/ 15 февраля 2012

Я думаю, что в Commodore 128 Basic был оператор in .
Есть ли оператор в C # тоже?

Я имею в виду, есть ли оператор вида

if(aString in ["a", "b", "c"])  
  Console.Out.WriteLine("aString is 'a', 'b' or 'c'");

Edit1: В настоящее время мне нужно решить, находится ли значение перечисления в диапазоне некоторых значений перечисления.

Edit2: Спасибо всем за решения Contains (). Я буду использовать это в будущем. Но в настоящее время у меня есть потребность в перечислении значений. Могу ли я заменить следующий оператор на Contains () или другие методы?

public enum MyEnum { A, B, C }

class MyEnumHelper
{
  void IsSpecialSet(MyEnum e)
  {
    return e in [MyEnum.A, MyEnum.C]
  }
}

Edit3: Извините, это не было Basic. Я просто погуглил некоторое время и нашел Turbo Pascal в качестве кандидата, где я мог видеть это. Смотри http://en.wikipedia.org/wiki/Pascal_%28programming_language%29#Set_types

Edit4: Лучшие ответы на данный момент (конец 15 февраля 2012 г.):

  • Для списков и массивов: принятый ответ и все остальные ответы с Содержит () решения
  • Для Enums: TheKaneda ответ с хорошим списком плюсов / минусов для различные методы расширения

Ответы [ 12 ]

1 голос
/ 15 февраля 2012

В большинстве коллекций есть метод .Contains, а в LINQ также есть метод Contains, поэтому все перечисляемые, которые не имеют собственного метода содержимого, получают один из LINQ.

0 голосов
/ 16 февраля 2012

Я удивлен, что никто не предложил switch:

class MyEnumHelper 
{ 
    void IsSpecialSet(MyEnum e) 
    { 
        return e in [MyEnum.A, MyEnum.C] 
        switch (e)
        {
            case MyEnum.A:
            case MyEnum.C:
                return true;
            default:
                return false;
        }
    } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...