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

本文关键字:条件运算符 失败 方法 | 更新日期: 2023-09-27 18:36:11

以下(C# Interactive)编译但崩溃。 不知道我错过了什么...

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

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

当然可以!

根据你的代码,t不是null,所以?.是多余的。

t.GetSomething不是。这就是抛出NullReferenceException的原因.

你要找的是这个:

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

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

我想你误解了这个运算符的工作方式。

var result = t?.GetSomething();

这里t?.的意思是"如果t为空,则在此处停止并返回 null;否则,取消引用t并检索成员GetSomething

现在,您没有检查GetSomething的任何内容。相反,您可以执行以下操作:

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