>>将派生类的列表转换为C#
中的基本类列表 C#中的继承允许从基类或接口创建派生类。但是,不允许将派生类的直接分配给其基类的AList
。 此限制源于类型系统对通用类型参数的严格性。List
>
interface IA {} class B : IA {} class C : B {} class Test { static void Main(string[] args) { IA a = new C(); // This is valid List<IA> listOfIA = new List<C>(); // Compiler error } }
方法1:使用ConvertAll
这种方法通过派生类的列表进行迭代,并将每个元素明确地投入到基类类型。
List<C> listOfC = new List<C>(); // Your list of derived classes List<IA> listOfIA = listOfC.ConvertAll(x => (IA)x);
方法2:使用Linq'sCast
>
>方法提供了更简洁的解决方案。 此方法执行与Cast<T>
相同的类型转换,但具有更精简的语法。
ConvertAll
List<C> listOfC = new List<C>(); // Your list of derived classes List<IA> listOfIA = listOfC.Cast<IA>().ToList();
>)。
以上是如何将派生类的列表转换为C#中的基本类列表?的详细内容。更多信息请关注PHP中文网其他相关文章!