[英]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.