Зачем нужен оператор ? при вызове метода? [дубликат]

222
13 сентября 2018, 15:10

На данный вопрос уже ответили:

  • Как упростить проверку на null на C#? 1 ответ

При просмотре одно из обучающих видео увидел следующую запись:

public event EventHandler Boom;
protected virtual void OnBoom();
{
  Boom?.Invoke(this, EventArgs.Empty);
}

А конкретно интересен оператор '?' при вызове метода Invoke на событии. Зачем нужен данный оператор? Какую роль он выполняет если применяется подобным образом при вызове методов? Касательно этого куска кода, который некачественно вырезан из контекста, информация не интересна. Нужно общее предназначение оператора '?'.

Answer 1

Начиная с C# 6.0 в языке появился оператор условного null (Null-Conditional Operator) или, как его нередко называют, элвис-оператор. Он позволяет упростить проверку на значение null в условных конструкциях.

И в данном примере, если Boom == null, вызов Invoke не произойдет. Если Boom != null, то вызов произойдет.

Общее предназначение оператора таково - если переменная, которая стоит перед ?, равна null, то вызов метода на этом объекте не произойдет.

READ ALSO
как можно, во время работы программы, подгружать ресурсы из фала .unitypackage?

как можно, во время работы программы, подгружать ресурсы из фала .unitypackage?

Во время работы приложение сервер должен прислать AssetBundle и файл с расширениемunitypackage, в котором хранится база данных с маркерами

230
Завершить lock блокировку по таймауту

Завершить lock блокировку по таймауту

Необходимо сделать блокировку, ограниченную по времени, например 1 секундуВ теле блокировки я делаю задержку на 2 секунды (умышленно):

204
Замена кода применяемого в WPF в Winows Forms C#

Замена кода применяемого в WPF в Winows Forms C#

Переношу код с WPF на Windows Forms и столкнулся с такой проблемойЕсть класс - который получает контекст от основного окна в конструктор

203