【為什么要使用泛型】
通過泛型可以定義類型安全的數據結構(類型安全),而無須使用實際的數據類型(可擴展)。這能夠顯著提高性能並得到更高質量的代碼(高性能),因為您可以重用數據處理算法,而無須復制類型特定的代碼(可重用)。在概念上,泛型類似於 C++ 模板,但是在實現和功能方面存在明顯差異。
基於 Object 的解決方案存在兩個問題。
第一個問題是性能。在使用值類型時,必須boxing & unboxing。裝箱和取消裝箱都會根據它們自己的權限造成重大的性能損失,但是它還會增加托管堆上的壓力,導致更多的垃圾收集工作,而這對於性能而言也不太好。即使是在使用引用類型而不是值類型時,仍然存在性能損失,這是因為必須從 Object 向您要與之交互的實際類型進行強制類型轉換,從而造成強制類型轉換開銷。
基於 Object 的解決方案的第二個問題(通常更為嚴重)是類型安全。因為編譯器允許在任何類型和 Object 之間進行強制類型轉換,所以您將丟失編譯時類型安全。例如,以下代碼可以正確編譯,但是在運行時將引發無效強制類型轉換異常。