Что мы имеем в виду?ИЛИ ЖЕ ??? - PullRequest
1 голос
/ 02 декабря 2010

Кто-то скажет мне разницу и пример, почему мы используем их. Я знаю его для значений NULL.

Ответы [ 4 ]

9 голосов
/ 02 декабря 2010

x ? a : b означает if (x == true) then a else b

x ?? y означает if (x != null) then x else y

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

Это позволяет вам написать var z = x ? a : b;, чтобы объединить объявление и присваивание в одну строку вместо многострочного варианта:

type z;
if (x == true)
  z = a;
else
  z = b;

Type? является сокращением для Nullable<Type>

2 голосов
/ 02 декабря 2010

? является троичным оператором, официально названным условным оператором в C #.

?? является нулевым оператором слияния

Условный оператор полезен для кратких, кратких операторов if / else

Оператор объединения нулей полезен для возврата одного значения, если оно не равно нулю, в противном случае возвращает другое значение (значение в правой части оператора)

1 голос
/ 02 декабря 2010
1 голос
/ 02 декабря 2010

есть два разных оператора, которые используют '?'

  • Условный Оператор: условие? Then: else, если условие истинно, тогда 'then part' else 'else part ', этот оператор похож на if-else.

  • null-coalescing оператор: ??Оператор называется оператором слияния нуля и используется для определения значения по умолчанию для типов значений, допускающих значение NULL, а также для ссылочных типов.Возвращает левый операнд, если он не равен нулю;в противном случае он возвращает правильный операнд.// y = x, если x не равно нулю, в этом случае y = -1.int y = x ??-1;

...