首頁 > 後端開發 > C++ > 為什麼在沒有顯式類型宣告的情況下隱式類型變數('var')不能保存匿名方法?

為什麼在沒有顯式類型宣告的情況下隱式類型變數('var')不能保存匿名方法?

Mary-Kate Olsen
發布: 2024-12-31 19:25:10
原創
614 人瀏覽過

Why Can't Implicitly Typed Variables ('var') Hold Anonymous Methods Without Explicit Type Declaration?

為什麼不能將匿名方法分配給隱式類型「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 表達式可以是 Expression> 型,它表示表達式樹ではなく、委託型です。

要解決此問題,請明確指定委託類型lambda 表達式:

var comparer = (Func<string, bool>)delegate(string value) {
    return value != "0";
};
登入後複製

透過此更改,程式碼將成功編譯,且lambda 表達式的推斷類型將為Func.

以上是為什麼在沒有顯式類型宣告的情況下隱式類型變數('var')不能保存匿名方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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