首頁 >後端開發 >C++ >為什麼不能將匿名方法直接賦值給 C# 中的 var ?

為什麼不能將匿名方法直接賦值給 C# 中的 var ?

Linda Hamilton
Linda Hamilton原創
2024-12-31 01:19:10255瀏覽

Why Can't Anonymous Methods Be Assigned Directly to `var` in C#?

為什麼匿名方法不能賦值給var

提供的程式碼中,匿名方法賦值給var變數無法透過編譯由於推斷委託類型的模糊性。

可以將匿名方法指派給委託類型,例如 Func或動作。但是,當指派給 var 時,編譯器無法確定要使用哪種委託類型。這是因為可能的委託類型有無限多種,特別是對於 lambda,尚不清楚其意圖是使用委託形式還是表達式樹形式。

此外,即使編譯器可以推斷出委託類型,這可能會導致不一致。例如,假設var 賦值編譯成功,則以下程式碼將不再有意義:

var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
    return false;
};

這是因為Func在.NET 3.5 中最多只允許四個參數,因此類型推斷與實際行為不匹配。

為了解決這種歧義,需要在將匿名方法指派給變數時明確指定委託類型。這確保了程式碼的清晰度和一致性。

以上是為什麼不能將匿名方法直接賦值給 C# 中的 var ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn