.NET泛型中的協變、逆變與「in/out」詳解
協變和逆變在.NET泛型介面和委託的設計中起著至關重要的作用。它們決定了在不同場景下如何安全地替換泛型類型。
協變與逆變
協變允許使用更“派生”(更具體)的類型來代替原始類型,前提是原始類型僅作為“返回值”(例如,作為返回值)。相反,逆變允許使用更“基底”(更不具體)的類型來代替原始類型,前提是原始類型僅作為“輸入”(例如,作為方法參數)。
「in」與「out」
「in」和「out」關鍵字分別是協變和逆變的簡寫。當泛型類型僅作為傳回值出現時,使用「out」;當泛型類型僅作為方法參數出現時,使用「in」。
關係闡明
文中關於無法將List
使用泛型介面的深入解釋
為了更深入地理解協變和逆變,考慮以下兩個泛型方法:
<code>public Base DoSomething(int variable) public Derived DoSomethingElse(int variable)</code>
假設一個介面MyInterface
interface MyInterface<out T>
表示T只能用作回傳類型。將MyInterfaceinterface MyInterface<in T>
表示T只能用作方法參數。將MyInterface總結
理解協變、逆變和「in/out」的概念對於有效使用.NET中的泛型至關重要。它允許您透過確保根據泛型類型的用法正確替換泛型類型來建立類型安全的程式碼。
以上是.NET 泛型中的協變、逆變和「in」/「out」關鍵字是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!