gpt4 book ai didi

C# 继承类列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:28:01 25 4
gpt4 key购买 nike

我有以下类(class):

public class BaseClass() {}
public class Class1 : BaseClass {}
public class Class2 : BaseClass {}

public class BaseClassList : List<BaseClass> {}
public class Class1List : List<Class1> {}
public class Class2List : List<Class2> {}

数据为 JSON 格式,作为 BaseClass 对象列表加载。加载后并希望使用相关对象填充特定列表:

public void Setup()
{
Class1List list1 = new Class1List();

var query = from x in BaseClassList
where x.Type = MyType.Class1
select x;

list1.AddRange(query);
}

但是 AddRange 无法编译,因为我正在尝试将 BaseClass 对象添加到 Class1 列表。

如何成功添加继承类?

最佳答案

试试这个代码片段,

public void Setup()
{
Class1List list1 = new Class1List();

var query = from x in BaseClassList
where x.GetType() == typeof(Class1)
select x as Class1;

list1.AddRange(query);
}

as 运算符将您的类型 BaseClass 转换为类型 Class1

引用:MSDN as Operator

如评论中所述,您可以使用此代码段节省更多时间:

public void Setup()
{
Class1List list1 = new Class1List();

var query = from x in BaseClassList
where x.GetType() == typeof(Class1)
select x;

foreach(var item in query){
var temp = item as Class1;
if(temp != null)
list1.Add(temp);
}
}

转换为 Class1 后,您可以检查是否为 null,因为如果无法转换,as 运算符将返回 null。我更愿意将类型与 where x.GetType() == typeof(Class1)

进行比较

关于C# 继承类列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21673123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com