Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从继承类中获取子级_C#_Class_Inheritance - Fatal编程技术网

C# 从继承类中获取子级

C# 从继承类中获取子级,c#,class,inheritance,C#,Class,Inheritance,我有两门课 public class A { public string prop1 { get; set; } public string prop2 { get; set; } public string prop3 { get; set; } } public class B : A { public string prop4 { get; set; } } 我有一种方法可以用B类型填充列表 问题:将结果放入列表 List BList=new List(

我有两门课

public class A
{
    public string prop1 { get; set; }
    public string prop2 { get; set; }
    public string prop3 { get; set; }
}

public class B : A
{
    public string prop4 { get; set; }
}
我有一种方法可以用
B
类型填充列表

问题:将结果放入
列表

List BList=new List();
BList=GetData()//用数据填充列表
列表列表=(列表)BList;//转换铸造

A
具有类
B
的所有字段,因此必须有一种简单的方法从
B
A
,您必须创建一个新的
列表
实例,引用
BList
中的所有项目:

List<A> AList = new List<A>(BList);
List AList=新列表(BList);

这是因为
List
不是协变的(也不可能是协变的)。

您可以使用Linq函数:

List<A> AList = BList.Cast<A>().ToList();
List AList=BList.Cast().ToList();

重复链接与继承无关。第一个答案是。因为这里有一个
列表
,所以也可以使用Linq投影
List AList=BList.Select(b=>(a)b).ToList()谢谢你们两位的回答。
List<A> AList = BList.Cast<A>().ToList();