2013-05-05 3 views
-3

Я просто чтение через некоторые друзья код и писать тестовую для него, и я столкнулся с чем-то, что это мне пристанет: «?»Что такое '?' персонаж в этой операции?

Console.WriteLine(inputString + (isPalindrome(inputString) ? displayConditions(" some text 1", 
ConsoleColor.Black) : displayConditions("some text 2", ConsoleColor.White))); 

Что делает символ в этой операции?

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

+3

http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx – 2kay

+0

Спасибо, я не знаю, как я не мог найти это на msdn Ха-ха! –

+0

Это [условный оператор '?:'] (Http://msdn.microsoft.com/en-us/library/ty67wk28.aspx). Часто называемый «тернарный оператор», поскольку он является единственным тройным оператором (оператор с тремя аргументами), поддерживаемый C#. – CodesInChaos

ответ

5

Этот будет тернарный оператор.

x ? y : z следует читать как

if (x) 
    y; 
else 
    z; 
+3

Технически ** ** **, ** **, тернарный оператор. Это оператор * условный *, иначе известный как оператор *?: *. –

+0

Я согласен, что технически это «а», а не «тройной оператор». Это заставило меня задуматься, но я рисую пробел. Какие другие тернарные операторы есть? – unxnut

+0

Нет, AFAIK. [] (Http://www.google.com) –

4

Это называется Conditional Operator

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

Практически это означает

result = (evaluate a condition) ? (expression to return if the condition is true) : 
            (expression to return if the condition is false) 
+3

Технически это * условный оператор *, который оказывается тройным оператором. –

+2

Да, слишком много VB в последнее время – Steve

+0

Большое спасибо. Примите ваш ответ, когда позволяет таймер. –

0

Это тройной оператор. Он используется для замены операторов, которые включают if {} else {}.

Так, например, вместо того, чтобы делать что-то вроде:

bool value = false; 
string myString; 
if (value){ 
    myString = "something"; 
else{ 
    myString = "something else"; 
} 

Вы можете сделать:

string myString = (value) ? "something" : "something else"; 

Выражение перед : будет оцениваться, если условие перед ? верно, в противном случае, будет оценено выражение после :.

Это также может быть использован для возвращения:

return (myCondition) ? "yes" : "no"; 
1

Это conditonal operator.

Он также широко известен как «тернарный оператор», но это означает только оператор с тремя операндами. Это ничего не говорит о том, что делает оператор, но это единственный оператор в C#, который имеет три операнда.

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