gpt4 book ai didi

c# - foreach 父类(super class)列表中的继承(子类)对象

转载 作者:太空狗 更新时间:2023-10-29 17:41:06 35 4
gpt4 key购买 nike

我有一个名为“ClassA”的父类(super class)和两个子类“Class1”和“Class2”。

我有一个包含“Class1”和“Class2”对象的列表,该列表的类型为“ClassA”。
我想通过做类似的事情来循环遍历列表中的“Class1”对象

List<ClassA> AList = new List<ClassA>;
AList.Add(new Class1());
AList.Add(new Class2());

foreach (Class1 c1 in AList)
{
// Do Something
}

但是当我这样做时,代码在到达不是“Class1”类型的对象时会抛出异常。

如何以一种简单的方式完成此操作,而无需检查列表中对象的类型并在类型正确时进行转换。像这样:

foreach (ClassA cA in AList)
{
if (cA.GetType() == typeof(Class1))
{
// Do Something
}
}

最佳答案

使用 LINQ:

foreach (Class1 c1 in AList.OfType<Class1>()) { }

请注意,如果您想在循环中检查类型,asis 运算符就是为此而设计的。喜欢:

foreach (ClassA cA in AList) {
Class1 c1 = cA as Class1;
if (c1 != null) {
// do something
}
}

关于c# - foreach 父类(super class)列表中的继承(子类)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007533/

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