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

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

Linda Hamilton
發布: 2024-12-31 01:19:10
原創
264 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板