首頁 > 後端開發 > C++ > 為什麼 C# 中方法組重載解析失敗並出現不明確的呼叫錯誤?

為什麼 C# 中方法組重載解析失敗並出現不明確的呼叫錯誤?

Linda Hamilton
發布: 2025-01-13 08:07:42
原創
391 人瀏覽過

Why Does Method Group Overload Resolution Fail with Ambiguous Invocation Errors in C#?

C# 方法組重載解析歧義

問題:

在 C# 中使用帶有重載委託方法的方法群組語法可能會觸發「不明確的呼叫」編譯器錯誤,即使匿名方法成功呼叫相同的重載也是如此。

為什麼會發生:

在重載決策期間將方法組轉換為多個相容的委託類型時,C# 編譯器缺乏明確的「更好」規則。 例如,如果 classWithSimpleMethods.GetString 可以轉換為 Func<string>Action,編譯器無法在它們之間進行選擇,導致歧義。

解析度(明確型別轉換):

解決方案是將方法組明確轉換為所需的委託類型:

<code class="language-csharp">classWithDelegateMethods.Method((Func<string>)classWithSimpleMethods.GetString);</code>
登入後複製

C# 7.3 改良:

C# 7.3 增強了方法組的重載解析。 在許多情況下(如提供的範例),classWithDelegateMethods.Method(classWithSimpleMethods.GetString) 和類似的呼叫現在無需明確轉換即可編譯。 然而,在複雜的場景中仍然可能出現歧義。

以上是為什麼 C# 中方法組重載解析失敗並出現不明確的呼叫錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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