首页 > IT职业 > IT生活 > c#中关于协变性和逆变性(又叫抗变)详解
今天回忆了之前看的《深入理解C#》这本书中的泛型章节,其中对泛型的可变性的理解。泛型可变性分两种:协变和逆变。逆变也又称为抗变。
怎么理解这两个名词的意思:
①:协变即为在泛型接口类型中使用out标识的类型参数。协变的字面意思是“与变化的方向相同”②逆变那就是用in来标识的泛型接口类型的类型参数。逆变的字面意思是“与变化的方向相反”
需要注意的是无论是协变还是逆变也只能在泛型接口中来使用。
先来举个基本的例子,来加强你对可变性的理解。在C#中有隐式类型转换,比如:
string str = "nibian";object str1 = str;Console.WriteLine(str1);
|

大家都知道string类型是object类型的子类型,即string->object为子->父;从子类型到父类型的转换是隐式类型转换。
举个例子:
interface IDemo
|
通过观察代码我们发现IDemo
相反的我们在来看一下有关逆变的代码:
interface IDemo
|
同样的IDemo
总结:协变和逆变就是在泛型接口类型将类型参数作为输入和输出的情况下,对类型间进行隐式转换的规律。
原文出处:https://www.cnblogs.com/yubabuneng/p/9506037.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1469/viewspace-2812269/ ,如需转载,请注明出处,否则将追究法律责任。