Dot-Net

為什麼不總是使用泛型?

  • October 14, 2020

我正在閱讀 SO 上關於泛型的現有文章。如果泛型有很多優點,比如類型安全,沒有裝箱/拆箱的成本,而且速度很快,為什麼不總是使用它呢?為什麼你會使用非泛型對象呢?

已編輯(問題在下面進一步擴展)

我有點困惑。上一次讀泛型是幾個月前,讀到如果參數中的類型是可變的,應該使用泛型以防止錯誤。不過,我現在似乎正在閱讀的是泛型將實現限制為固定類型,而非泛型對象允許您在執行時定義參數類型。

請幫我看看我錯過了什麼?

其次,當您在一個團隊中工作並且您的程式碼是可共享的時,在適當的 OOP 設計(泛型等)中使用這些類型的結構很有幫助。對於一個單獨的小規模程序員來說,誰知道參數中必須包含什麼類型,似乎沒有必要擔心,使用泛型或非泛型類型之間幾乎沒有區別。這是準確的嗎?

一般來說,您應該- 但是,有時(尤其是在編寫庫程式碼時)不可能(或者肯定不方便)了解呼叫類型(即使是T),所以非泛型類型(主要是介面,例如因為IList, IEnumerable) 非常有用。數據綁定就是一個很好的例子。實際上,使用泛型通常會使涉及反射的任何事情變得更加困難,並且由於(通過反射的性質)您已經失去了這些好處,您不妨只使用非泛型程式碼。反射和泛型根本不是很好的朋友。

引用自:https://stackoverflow.com/questions/4040746