Сокращение синтаксиса C # для множественного тестирования условий [дубликат]

На этот вопрос уже есть ответ здесь:

Проверить наличие нескольких значений в операторе if в C # [duplicate] 5 ответов

Какой синтаксис существует в C #, чтобы помочь с несколькими условиями тестирования?

Мне часто приходится тестировать несколько состояний следующим образом:

if (a == 3 || a == 4)

Возможно, я субъективен, но это не очень красиво.

Если есть больший набор условий, я мог бы сделать:

if (new int[]{3, 4, 5, 6, 7}.Contains(a))

Но если есть только несколько условий для тестирования, я не сохраняю нажатий клавиш.

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

// doesn't work
if (a == 3 || 4)

Это отличается от этого потока SO, потому что он имеет дело с короткими условиями (2 или 3), все с неизменным значением «a» в сравнении «сравнение с b».

 GreatAndPowerfulOz05 июл. 2016 г., 19:08
Я второе, что сказали Марко и JonSkeet. Используйте метод расширения.
 Jon Skeet05 июл. 2016 г., 18:58
Как часто ты этого хочешь? Возможно, вам следует использоватьswitch утверждение вместо, если есть несколько таких пар?
 Jon Skeet05 июл. 2016 г., 18:54
Так тыдействительно просить о языковой функциипросто для случая, когда у вас есть одна переменная, которую вы хотите сравнить только с небольшим количеством случаев? Это намного ниже языковой панели функций IMO.
 Jon Skeet05 июл. 2016 г., 19:05
В то время как я редко оказываюсь в такой ситуации. Похоже, метод расширения действительно поможет вам.
 Aaron Thomas05 июл. 2016 г., 18:54
@JonSkeet вы правы. Я думаю, что реальная проблема, однако, заключается не только в сохранении нажатий клавиш, но в том, что одна сторона условия никогда не меняется, однако я должен повторять это снова, каждый раз, когда я хочу сравнить с другой стороной, которая меняется.
 Marko05 июл. 2016 г., 18:54
Вы можете написать свой собственный метод расширения, такой как a.IsAny (3, 4), чтобы упростить ваш код.
 Aaron Thomas05 июл. 2016 г., 19:14
Спасибо вам всем. Для дальнейшего использования, использование обобщений в методе расширения очень хорошо подходит для такого рода приложений, как изложено вstackoverflow.com/a/14067242/2658159.
 Jon Skeet05 июл. 2016 г., 18:53
«Я не сохраняю нажатий клавиш» - сохранение нажатий клавиш никогда не является хорошей целью. Хорошие цели - сделать вещи более читабельными или (после проверки их чувствительности) более производительными.
 Aaron Thomas05 июл. 2016 г., 18:53
@ Shachaf.Gortler спасибо, отредактировал, чтобы объяснить разницу с другим SO вопросом, на который вы ссылались.
 Aaron Thomas05 июл. 2016 г., 19:04
@JonSkeet Я думаю, что сейчас я не нахожусь за рамками вопроса, но лично я бы использовал такую ​​функцию в хороший процент времени, когда|| или же&& существует вif заявление. «если a это то, то или другое» было бы лучше, чем «если a это, или a то, или a другое», особенно если «то, то, или другое» того же типа, что иa, а такжеa не меняется в течениеif заявление.

Ответы на вопрос(1)

Решение Вопроса

нет нет. Извините, но это ваш ответ.

Ваш ответ на вопрос