Что значит символ ? в данном случае

198
05 февраля 2018, 02:52

Что обозначает следующая запись, а точнее занак "?" в ней?

 delegate void MessagesRecievedDelegate(
     VkApi owner, ReadOnlyCollection<Message> messages); 
 static event MessagesRecievedDelegate NewMessages;
 ...
 NewMessages?.Invoke(vkApi, history.Messages);
Answer 1

Это т.н. оператор Элвиса, он же null propagation operator. Позволяет избегать NullReferenceException. Работает он так: при попытке получить значение после ?. - он получает доступ к члену если объект до оператора не null, в противном случае выражение получает значение null - и цепочка вызовов не продолжается (в случае если там много таких операторов - obj1?.rec1?.rec2 если obj1 == null - дальнейшая цепочка не будет вычисляться - все выражение будет null). Оператор был введен в C# 6. Хорошо работает в связке с оператором ??. Позволяя творить такие штуки:

var minPrice = product?.PriceBreaks?[0]?.Price ?? 0;

В старых версиях языка - такая конструкция была бы жутким нагромождением вложенных условных переходов с проверками.

В вашем же случае, это просто защита от того, что на событие нет подписчиков, без этого оператора в случае если подписчиков нет - приложение бы выпало с ошибкой, а с ним событие попросту не возникает.

READ ALSO
Как сделать сравнение строк на большие, меньшие?

Как сделать сравнение строк на большие, меньшие?

Как сделать сравнение строк (string) на большие или меньшие?

164
Свойства файла как в windows C#

Свойства файла как в windows C#

ЗдравствуйтеПодскажите, как можно посмотреть свойства файла на подобии тех, что появляются в окошке, когда жмешь правой кнопкой мыши по файлу,...

170
Рисовать в пропорции к PictureBox

Рисовать в пропорции к PictureBox

РисуюImage на PictureBox, я сделал возможность лепить Image пользователю на PictureBox самому, чтобы он выбирал место (X, Y) где хочет

180
Рисование в UWP

Рисование в UWP

Столкнулся с проблемой рисования в UWPПо задумке, на странице будет область, где можно располагать заранее нарисованные фигуры, которые были...

160