我有一個包含(基類)車輛數組的Fleet類。陣列中的車輛是車輛的小類:平原,火車和汽車。該陣列是私人的,但艦隊類必須提供一種方法來獲取給定類型的車輛。查找C中數組中給定類型的元素#
喜歡的東西:
class Fleet
{
private Vehicle[] _vehicles;
// returns the vehicles of the specified subclass
public ???? Get(????)
{
return ????
}
}
Fleet fleet = new Fleet("fleet.def");
Trains[] trains = fleet.Get(Trains); // looks clean but isn't possible
Plains[] plains = fleet.Get<Plains>(); // looks okay but don't know
// how to implement
(我使用數組,但真的可以迭代任何集合類型是罰款)
現在,你可以看到,我完全不知道如何實現這一點。我正在爲Get方法尋找一個優雅的解決方案,效率不是真正的問題。還請說出解決方案中涉及的關鍵技術,以便我可以在我的C#書籍中查找它們...
謝謝!
非常感謝DH !看起來很乾淨。現在我可以使用「foreach」(Plain plain in fleet.Get()){}。我想我也可以使用.ToList()和.ToArray()將結果存儲在一個變量中嗎? 什麼是這種技術與尖括號調用(是的,我是一個n00b,而不是它的慚愧)? –
這就是所謂的泛型。這個想法是用一個具體類型替代重用(例如,當你有不同類型的操作類似)。在http://msdn.microsoft.com/en-us/library/0x6a29h6.aspx –
中介紹更多泛型簡介嗯,這是一個相當通用的名稱,對於這樣一個特定的事情:-)再次感謝,我有一些閱讀做... –