繁体   English   中英

将子类别与父类别区分开来

[英]Differentiate child class from the list of parent

我需要在父母名单中区分孩子。 我有一个父母名单

List<Parent> all = new List<Parent>();

Parent c1 = new Child1();
Parent c2 = new Child2();

all.add(c1);
all.add(c2);

有什么方法可以检查列表中的项目是Child1还是Child2?

目前尚不清楚您是否想知道这些项目是全部特定类型还是两种类型之一。

要确定所有项是否都是Child1实例:

all.All(item => (item is Child1))

要确定所有项目是否Child1Child2实例:

all.All(item => (item is Child1) || (item is Child2))

如果要遍历列表并根据项目类型执行某些操作,则可以执行以下操作:

foreach(var item in list)
{
    if(item is Child1)
    {
        var child1 = (Child1)item;
        child1.DoSomething();
    }
    else if(...)
    {
        ...
    }
}

如果使用c#7,则可以通过直接在if语句中创建一个临时变量来做得更好:

foreach(var item in list)
{
    if(item is Child1 child1)
    {
        child1.DoSomething();
    }
    else if(...)
    {
        ...
    }
}

或者您可以像下面这样as运算符:

foreach(var item in list)
{
    var child1 = item as Child1;
    if(item != null)
    {
        child1.DoSomething();
    }
    var chil2 = item as Child2;
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM