C#6方法的空条件运算符失败

dud*_*er4 -1 c# c#-6.0 null-propagation-operator

以下(C#Interactive)编译但会爆炸.不确定我错过了什么......

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

Pau*_*ado 8

当然有!

通过你的代码,t不是null,所以?.是多余的.

t.GetSomething事实并非如此.这就是扔掉它的东西NullReferenceException.

您正在寻找的是:

var result = t.GetSomething?.Invoke();
Run Code Online (Sandbox Code Playgroud)

要了解如何实现新的C#6功能,请查看我的文章.