2015-11-20 7 views
0

В принципе у меня есть объект, который для этого вопроса я называю «a», , Если свойство «b» объекта «a» является любым из 1, 4, 6 (например, но может быть больше значений, которые являются подходящими) Я хочу установить его на 8 (опять-таки, например). Сейчас, как правило, я бы в конечном итоге делает что-то вроде -C# - Есть ли способ сократить «if (ab == 1 || ab == 4 || ab == 6)«

if(a.b == 1 || a.b == 4 || a.b == 6) 
    a.b = 8; 

Но я не могу не думать о том, что должно быть что-то проще/короче. Я действительно искал что-то вроде MSSQL in синтаксиса (если она существует) -

SELECT 
    * 
FROM table 
WHERE 
    table.field IN (1, 4, 6) 

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

int[] values = { 1, 4, 6 }; 
if(values.Contains(a.b)) 
    a.b = 8; 
+0

В этих случаях я использую подход массива - это делает код намного понятнее. – SWeko

+3

Трудно выполнить три логических операции для удобочитаемости или скорости. –

+4

Любая альтернатива была бы менее читаемой. Я оставил бы его как есть. – Konamiman

ответ

3

Отвечая на ваш вопрос о MSSQL IN похож синтаксис, самая короткая вещь, которую вы может сделать i с:

if (new[] {1, 4, 6}.Contains(a.b)) { 
    a.b = 8; 
} 

Однако этот код может принести больше проблем с читабельностью, чем улучшения.

+2

Но это не намного короче исходного кода. Это будет (много) медленнее. –

+0

Это выглядит короче, но на самом деле разница невелика для 3 значений. С другой стороны, это менее читаемо, чем просто 'if'. – i486

+0

читабельность идет для броска здесь ....... – Viru

Смежные вопросы