為什麼不能將匿名方法分配給隱式類型「Var」推斷的變數?
考慮以下程式碼:
Func<string, bool> comparer = delegate(string value) { return value != "0"; };
此程式碼編譯成功,因為 lambda 的推斷類型表達式是一個 Func 委託。但是,以下程式碼無法編譯:
var comparer = delegate(string value) { return value != "0"; };
在這種情況下,編譯器無法推斷 lambda 表達式的委託類型。這是因為可以推斷出無限多種可能的委託類型,而編譯器沒有足夠的上下文來決定要使用哪一種委託類型。
例如,lambda 表達式可以是 Func
要解決此問題,請明確指定委託類型lambda 表達式:
var comparer = (Func<string, bool>)delegate(string value) { return value != "0"; };
透過此更改,程式碼將成功編譯,且lambda 表達式的推斷類型將為Func.
以上是為什麼在沒有顯式類型宣告的情況下隱式類型變數('var')不能保存匿名方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!