試圖幫助一個朋友在這裏。我不是微軟的程序員。創建一個抽象基類的數組或列表或子集
public abstract class Foo {}
public class Bar : Foo {}
public class Baz : Foo {}
這似乎是工作得很好,然後在另一個類,他可以實例的Bar
陣列,並Baz
這樣
public class MyClass {
Bar[] Bars = new Bar[] { new Bar[] { new Bar(), new Bar() } }
Baz[] Bazs = new Baz[] { new Baz[] { new Baz(), new Baz() } }
}
的問題是,如果他想有一個返回Foos
和Bars
的訪問他是怎麼做的?
public class MyClass {
Bar[] Bars = new Bar[] { new Bar[] { new Bar(), new Bar() } }
Baz[] Bazs = new Baz[] { new Baz[] { new Baz(), new Baz() } }
public IEnumerable<Foo> GetFoos() {
// No go.
return [ Bars, Bazs ];
// Also No go.
List<Foo> test = new List<Foo> { Bars, Bazs };
return test;
}
}
我認爲微軟通常使用接口來實現這一點,但他的任務需要使用抽象基類。有沒有辦法返回一個抽象基類的List或Array的子元素?
在這兩種情況下,你可以'創建'new Foo()'的實例,因爲'Foo'是一個抽象類。您可以創建Bar和Baz的對象並返回一個Foo數組。看下面的答案是否有幫助。 –
在代碼中出現語法錯誤:使用Bar [] Bars = new Bar [] {new Bar(),new Bar()}創建一個數組,您似乎創建了一些嵌套數組,新酒吧[] {新酒吧[] {...' – HugoRune