Задать вопрос
Kalendj
@Kalendj
Изучаю C#, Unity, изометрию

В чём разница между операторами ??, ??= и ?. в C#?

Они всё работают с null и помогают, к примеру, избежать ошибки NullRefferenceException. Но я плохо понял разницу между ними.
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
dollar
@dollar
Делай добро и бросай его в воду.
int? x = null;
int y = x ?? -1; // Если x равно null, то y будет равно -1

int? z = null;
z ??= 5; // z будет равно 5, поскольку оно было равно null

string str = null;
var length = str?.Length; // length будет равно null
Ответ написан
Комментировать
Ну блин это же абсолютно разные операторы для разных вещей.

1. c = a ?? b
Эквивалентен:
if(a is null)
  c = a;
else 
  c = b;


2. a ??= b;
Эквивалентен:
a = a ?? b;

3.
a = b?.c;

Эквивалентен:
if (b is null)
  a = null;
else 
  a = b.c;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BloodyAstra
@BloodyAstra
https://metanit.com/sharp/tutorial/3.26.php Вот тут все подробно про это написано
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы