2015-03-24 3 views
-1

Я получил экзамен и увидел такой вопрос;C# множественная последовательность? условный оператор

var b = (1==2) ? (1==1) ? (2==1) ? "A" : "B" : "C" : "D"; 

Что такое b и как оно работает в таком состоянии?

Спасибо.

+0

Вы имеете в виду '(1 == 2)? (1 == 1)? (2 == 1)? «A»: «B»: «C»: «D» '? – Pluto

+0

да, я имею в виду это. спасибо за предупреждение. Я рассматриваю вопрос –

ответ

2

A ternary operator действует как например:
Заявление

variable = condition ? value1 : value2 

эквивалентно

if (condition) 
{ 
    variable = value1; 
} 
else 
{ 
    variable = value2; 
} 

Так что в вашем случае,

var b = (1==2) ? (1==1) ? (2==1) ? "A" : "B" : "C" : "D"; 

просто несколько вложенных тройные операторов, и это то же самое, что и

var b; 
    if (1==2) 
    { 
     if (1==1) 
     { 
     if (2==1) 
     { 
      b = "A"; 
     } 
     else 
     { 
     b = "B"; 
     } 
     } 
     else 
     { 
     b = "C"; 
     } 
    } 
    else 
    { 
     b = "D"; 
    } 
+0

Хорошо, я получил его, большое вам спасибо. –

+1

'b' сразу выходит из области видимости в вашем примере, так что это не совсем то же самое :) – learningcs

+0

Достаточно справедливо, я изменил пример, чтобы b оставался в области видимости после условных блоков. – rageandqq

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