簡體   English   中英

是否可以在C#的父類列表中找到給定的子類?

[英]Is it possible to find a given child class in a list of parent classes in C#?

給定一個ClassA列表,該列表由ClassA的多個子類(如ClassB或ClassC)填充,是否有辦法遍歷該列表並查找ClassB或ClassC的實例並訪問它們的類專有方法?

當然是啦。 代碼的通常模式是

 ClassB classB = classA as ClassB;
 if (classB == null)
 {
     // do something else, probably return
 }
 classB.DoTheThingYouNeedClassBFor();

盡管,順便說一句,這種情況有點“代碼味道”。 通常,如果您遇到這種情況,則可以在設計中進行改進。 如果您詳細說明了要解決的問題,也許有人可以提出更好的解決方案。

假設您有一些非同類類的列表,則可以執行以下操作:

void Main()
{
    var a = new List<A>{
        new A(),
        new B(),
        new C()
    };

    //1
    Console.Write(a.Where(x => x is C).ToList().Count());
}

public class A {
    string a;
}

public class B: A {
    int b;
}

public class C: B {
    long c;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM