代码之家  ›  专栏  ›  技术社区  ›  1800 INFORMATION

你什么时候不使用泛型集合?

  •  3
  • 1800 INFORMATION  · 技术社区  · 15 年前

    使用泛型的好处是它增加了类型安全性—您只能放入正确类型的东西,而不需要强制转换就可以得到正确的类型。我认为不使用泛型集合的唯一原因是需要存储一些任意数据。我错过什么了吗?在处理集合时还有什么原因不使用泛型?

    8 回复  |  直到 11 年前
        1
  •  15
  •   Jon Skeet    15 年前

    List<object> (或者别的什么)。那么很明显 武断的。

    除此之外,我不会将非泛型集合用于任何事情。我 习惯于 IEnumerable IList 当我把 object 引用,但不知道在编译时将其强制转换为的类型-因此是非泛型的 有时是有用的。。。但不是非泛型类本身。

        2
  •  7
  •   George Stocker NotMe    15 年前

    你可以在.NET中看到这种情况。 System.Windows.Form.Control.Controls 不是通用的,也不是 System.Web.UI.Control.Controls .

        3
  •  3
  •   munificent    15 年前

    泛型几乎总是正确使用的东西。注意像Haskell和ML这样的语言本质上是 只有 允许这个模型:在这些语言中根本没有默认的“object”或“void*”。

    我可能不使用泛型的唯一原因是:

    1. 在编译时根本不知道合适的类型。比如反序列化对象,或者通过反射实例化对象。

    2. CRTP .

        4
  •  2
  •   Justin Bannister    15 年前

        5
  •  2
  •   Joel Coehoorn    15 年前

    Type variance 使用泛型可能会让你绊倒,但主要是你 应该

        6
  •  1
  •   George Stocker NotMe    15 年前
        7
  •  1
  •   JaredPar    15 年前

    只需插入Hashtable的实例。它们在许多场景中有着非常不同的行为,这些场景会破坏程序。在这两个集合之间切换会迫使优秀的程序员检查用例,以确保差异不会影响它们。

        8
  •  0
  •   Mariusz Jamro    8 年前

    非通用的 Collection Microsoft.VisualBasic