又因为类型参数支持协变性, 所以可以进一步把IEnumerable转化为IEnumerable
2.2逆变性
逆变性指的是泛型类型参数可以从一个基类隐式地转化为派生类,C..., 类或泛型方法的类型参数都不支持协变和逆变
(2)协变和逆变只适用于引用类型, 值类型不支持协变和逆变(例如List无法转化为IEnumerable)
(3)必须显式地用in...要让编译器通过, 我们必须使用强制类型转换, 把object转换为int. 即obj = (int)obj + 10;
但是动态类型的引入到底有什么好处呢?
1,可以减少强制类型转换的使用....因为动态类型是在程序运行时才被确定, 使用它可以避免代码进行强制类型转换,从而使代码看起来更加简洁.
2,调用Python等动态语言....动态类型除了可以减少强制类型转换外, 还可以让我们在C#语言中调用Python这样的动态语言.
这里对动态类型介绍的不多, 主要是介绍了一个dynamic关键字, 如果以后用到再来百度就好了.