在 C# 中,匿名方法提供了一種定義內聯函數的便捷方法。雖然這些方法可以輕鬆指派給委託類型,但嘗試將它們指派給隱式類型變數(使用 var)通常會導致編譯器錯誤。
考慮以下程式碼範例:
Func<string, bool> comparer = delegate(string value) { return value != "0"; };
此程式碼成功編譯,因為匿名方法被明確地指派給 Func
var comparer = delegate(string value) { return value != "0"; };
錯誤:
無法將匿名方法指派給隱式類型的局部變數。
發生此錯誤的原因是編譯器無法推斷匿名方法的類型。它可以表示無數種可能的委託類型,包括 Func、Predicate、Action 和無數其他類型。
此外,即使編譯器推斷出 Func
var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; };
但是,這沒有意義,因為 Func
要解決此問題並確保匿名方法編譯為正確的委託類型,需要在賦值語句中明確指定委託類型,如第一個程式碼範例所示。
以上是為什麼我不能在 C# 中將匿名方法分配給'var”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!