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

Если у меня есть переменная в C #, которую необходимо проверить, чтобы определить, равна ли она одной из набора переменных, каков наилучший способ сделать это?

Я не ищу решение, которое хранит набор в массиве. Мне более любопытно посмотреть, есть ли решение, которое каким-то образом использует булеву логику, чтобы получить ответ.

Я знаю, что мог бы сделать что-то вроде этого:

int baseCase = 5;
bool testResult = baseCase == 3 || baseCase == 7 || baseCase == 12 || baseCase == 5;

Мне любопытно посмотреть, смогу ли я сделать что-то вроде этого:

int baseCase = 5;
bool testResult = baseCase == (3 | 7 | 12 | 5);

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

ОБНОВЛЕНИЕ:
Я решил принять ответ CoreyN, поскольку это кажется самым простым подходом. Думаю, это практично, и все же просто для начинающего, чтобы понять.

К сожалению, там, где я работаю, наша система использует платформу .NET 2.0, и в ближайшее время нет никаких шансов на обновление. Существуют ли какие-либо другие решения, не основанные на .NET 3.5, кроме наиболее очевидного, о котором я могу подумать:

new List<int>(new int[] { 3, 6, 7, 1 }).Contains(5);
20.08.2008 17:37:16
Вот решение .NET 2.0, немного более сложное, чем у Кори: stackoverflow.com/questions/18407#153037
Joe 30.09.2008 13:38:51
Пример javascript stackoverflow.com/questions/12116326
LCJ 21.01.2015 21:23:45
4 ОТВЕТА
РЕШЕНИЕ
        bool b = new int[] { 3,7,12,5 }.Contains(5);
16
20.08.2008 17:40:30

Я обычно использую CoreyN «S решение для простых случаев , как это. Что-нибудь более сложное, используйте запрос LINQ.

0
23.05.2017 12:33:26

Поскольку вы не указали тип данных, которые вы используете в качестве входных данных, я предполагаю, что вы можете разделить свой ввод на степени 2 -> 2,4,8,16 ... Это позволит вам использовать биты для определения если ваше тестовое значение является одним из битов на входе.

4 => 0000100
16 => 0010000
64 => 1000000

используя некоторую двоичную математику ...

testList = 4 + 16 + 64 => 1010100
testValue = 16
testResult = testList & testValue

-1
10.09.2008 19:19:45

Вы можете сделать нечто подобное с .NET 2.0, воспользовавшись тем, что массив T реализует IList <T>, а IList <T> имеет метод Contains. Поэтому следующее эквивалентно решению Corey .NET 3.5, хотя, очевидно, не так ясно:

bool b = ((IList<int>)new int[] { 3, 7, 12, 5 }).Contains(5); 

Я часто использую IList <T> для объявлений массива или, по крайней мере, для передачи аргументов одномерного массива. Это означает, что вы можете использовать свойства IList, такие как Count, и легко переключаться с массива на список. Например

private readonly IList<int> someIntegers = new int[] { 1,2,3,4,5 };
1
30.09.2008 13:34:45