.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中文网其他相关文章!