簡體   English   中英

方法的C#6空條件運算符失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM