Aur*_*eer 6 c# generics casting
是否有可能从基于T的泛型类"upcast"到基于比T更通用的泛型类?
例如,假设我有一个名为Derived继承自名为的类的类Base.我可以做这样的事情:
List<Derived> der = new List<Derived>();
List<Base> bas = (List<Base>) der;
Run Code Online (Sandbox Code Playgroud)
或者,使用接口,是否可以执行以下操作:
List<MyClonableType> specific = new List<MyClonableType>();
List<IClonable> general = (List<IClonable>)specific;
Run Code Online (Sandbox Code Playgroud)
正如这里所写,每个例子都失败了InvalidCastException.我们争论的问题是它是否实际上是不可能的,或者只是一个语法错误,如果我们知道如何可以修复.
它将在遵守某些规则的接口和委托上启用。List<T>不会被支持,因为它是一个具体的类。IList<T>也不会被支持,因为它的方法T在in和out位置中使用。