簡體   English   中英

虛空型方法表達式主體成員允許非空類型的表達式*如果使用其他方法*

[英]Void-type method expression-bodied member allows expression of non-void type *if other method*

我不確定該怎么做,我在和C#中的表達式強成員一起玩,我發現有些奇怪。

本質上,如果您創建的方法表達式主體成員具有空返回類型,則仍可以使用非空返回類型方法作為表達式。

例:

public void MethodA() { }
public void MethodB() => MethodA();

可以正常工作。

public string MethodA() { return "MethodA"; }
public void MethodB() => MethodA();

編譯就很好(我還沒有運行它進行測試,但是它編譯的事實使我感到困惑)。 這使我感到困惑,因為在我的腦海中我看到:

public void MethodB() { return MethodA(); }

這顯然是無效的,因為return語句實際上返回一個值,這在void方法中是不允許的。

但是,奇怪的是以下代碼無法編譯:

public void MethodC() => "MethodC";

並給出“僅分配...”錯誤。

為什么會這樣呢? 這是故意的,還是某種錯誤? 有什么我想念的嗎? 如果表達式身體強壯的成員是另一種方法,是否只允許丟棄表達式的結果?

這使我感到困惑,因為在我的腦海中我看到:

 public void MethodB() { return MethodA(); } 

這實際上是不正確的。 生成的實際語法是這樣的:

public void MethodB() { MethodA(); }

那就很好。 返回值將被忽略。

"MethodC"代碼片段不是可以使結果無效的方法。 它是一個實際值,需要根據C#語法進行分配。 對於常規語句也是如此:放入"MethodC"; 在空行上失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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