[英]C# 6 Null Conditional Operator for Method Fails
以下(C#Interactive)會編譯但會崩潰。 不知道我在想什么...
class Test { public Func<object> GetSomething = null; }
var t = new Test();
var result = t?.GetSomething();
當然可以!
根據您的代碼, t
不為null
,所以?.
是多余的。
但是不是t.GetSomething
。 那就是拋出NullReferenceException
。
您正在尋找的是:
var result = t.GetSomething?.Invoke();
要了解新的C#6功能是如何實現的,請看一下我的文章 。
我認為您誤解了該運算符的工作方式。
var result = t?.GetSomething();
在這里t?.
表示“如果t
為null,則在此處停止並返回null;否則,取消引用t
並檢索成員GetSomething
。
現在,您無需檢查GetSomething
任何GetSomething
。 相反,你可以這樣做:
var result = t?.GetSomething?.Invoke();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.