关于.net:有什么区别b / w通用列表和Arraylist,通用列表和HashTable,通用列表对没有通用?

What is difference b/w Generic List and Arraylist, Generic List Vs HashTable, Generic List Vs No Generic?

两者有什么区别

  • 通用列表和数组列表
  • 通用列表与哈希表
  • 通用列表与非通用列表?

  • 基本上,通用集合在编译时是类型安全的:您指定集合应该包含哪种类型的对象,类型系统将确保您只将这种类型的对象放入其中。此外,当你取出物品时,你不需要把它扔出去。

    例如,假设我们需要一组字符串。我们可以这样使用ArrayList

    1
    2
    3
    4
    5
    ArrayList list = new ArrayList();
    list.Add("hello");
    list.Add(new Button()); // Oops! That's not meant to be there...
    ...
    string firstEntry = (string) list[0];

    但是,List将防止无效输入,并避免强制转换:

    1
    2
    3
    4
    5
    6
    7
    List<string> list = new List<string>();
    list.Add("hello");
    list.Add(new Button()); // This won't compile
    ...
    // No need for a cast; guaranteed to be type-safe... although it
    // will still throw an exception if the list is empty
    string firstEntry = list[0];

    请注意,泛型集合只是泛型更一般特性的一个示例(尽管是最常用的一个),它允许您根据所处理的数据类型参数化类型或方法。


    .NET 1.0中包含arraylist和hashtable类型。它们或多或少相当于一个列表和一本字典。

    它们的存在都是为了在2.0中引入泛型之前保持与.NET 1.0或1.1中编写的代码的兼容性,如果您以.NET 2.0或更高版本为目标,通常应该避免使用。