我有一個列表如何寫出來的派生類的內容列表
List <RootClass> classes = new List<RootClass>();
RootClass是一個抽象類外面我獲得其他兩個類:SubClass1和SubClass2。 在節目中我通過以下方式創建新類:
classes.Add(new SubClass1(arg1, arg2));
classes.Add(new SubClass2(arg1, arg2));
現在,讓我們說,我有SubClass1的20,並在類表20個SubClass2。 我如何爲列表中的所有SubClass1實例寫出一個字段?
我想:
foreach(SubClass1 sc1 in classes){
Console.WriteLine(sc1.field1);
}
但似乎編譯器試圖施放的每個對象在列表中它是否是一個類型SubClass1或SubClass2,所以它拋出一個轉換異常,當它試圖用這樣做鍵入SubClass2。
我也做:
foreach (RootClass rc in classes){
if (rc is Subclass1){
SubClass1 sc1 = rc as SubClass1;
ConsoleWriteLine(sc1.field1);
}
}
它正常工作與後者的解決方案,問題是,在節目中我'寫我要重複很多次,每一次修改不同的領域,不同的方式,所以我的問題是有沒有更深刻的方式來做到這一點?
什麼是'名單'的責任? –
你可以使用'OfType',例如:'foreach(var in classes.OfType())' –
如果你經常需要這些部分列表並且迭代所有的子類,那麼爲每個'Subclass'維護一個列表可能會更有意義他們當你需要完整的列表。 – lukegravitt