Нулевой условный оператор C# 6 для сбоя метода

Следующее (C# Interactive) компилируется, но взрывается. Не уверен, что мне не хватает...

class Test { public Func<object> GetSomething = null; }
var t = new Test();
var result = t?.GetSomething();

2 ответа

Решение

Конечно, это так!

По вашему коду, t не является null, так ?. избыточно

Но t.GetSomething нет. Вот что бросает NullReferenceException,

То, что вы ищете, это:

var result = t.GetSomething?.Invoke();

Чтобы увидеть, как реализованы новые функции C# 6, взгляните на мою статью.

Я думаю, вы неправильно поняли, как работает этот оператор.

var result = t?.GetSomething();

Вот t?. означает "если t нуль, остановитесь прямо здесь и верните ноль; в противном случае разыменование t и получить член GetSomething,

Теперь вы ничего не проверяете на GetSomething, Вместо этого вы можете сделать:

var result = t?.GetSomething?.Invoke();
Другие вопросы по тегам