因爲離開類型參數照樣不是真的幹。考慮這個類:
class Muffin {
List<string> _peopleWhoLikeMuffins = new List<string>();
public Muffin(List<string> peopleWhoLikeMuffins) {
_peopleWhoLikeMuffins = peopleWhoLikeMuffins);
}
public void AddMuffinLiker(string p) {
_peopleWhoLikeMuffins.Add(p);
}
}
這是真的很短,只包含基本的功能,但我不得不使用string
- genertic類型參數 - 四倍。它將永遠是一樣的。如果我決定稍後改變這種類型,我將不得不更換所有四種產品。
在現實世界的場景中,我們正在談論數百個而不是4個。因此,總是封裝它並不是一件容易的事情,但它絕對值得考慮。
現在,我的例子不是很好(不僅僅是因爲愚蠢的名字),但是你明白了 - 你會有很多字段和變量的聲明和實例化,每次你必須傳遞一個類型參數,該參數在整個代碼庫中始終保持不變,除非其他類也是通用的。
這樣做的另一個好處是,如果您需要向集合中添加一些額外的狀態/行爲,那麼您的工作量會少得多。
所有人都說,我自己並不經常使用這種抽象。
在您給出的例子中,將Muffin泛化爲泛型(並將其與字符串一起使用)比對列表進行硬編碼更有意義,所以我不認爲它是有利於創建特定類型。 –
sinelaw
@sinelaw:是的,我在編輯中指出這個例子不太好,可能也應該是通用的 – Dyppl