如题定义
ArrayList arr = new ArrayList();ArrayList[] arr = new ArrayList[5];我认为ArrayList的对象不能称之为数组,因为我们操作的其实是arr这个对象中的数组,我觉得称之为集合对象更恰当,大家怎么看很多人会把上面的两句定义搞混!将ArrayList的对象称之为动态数组,我觉得不恰当.

解决方案 »

  1.   

    .net framework中还有一种Array类型(所有.net平台下的语言都可以使用)。那么你的问题岂不是更多啦?!
      

  2.   

    数组是一个类型的集合,ArrayList[]就是ArrayList的一个集合,而ArrayList本身表示一些对象的集合(存放的对象的类型可以不一样).不知道这样说,楼主明白不?
      

  3.   

    例如我们可以写static public object GetFirst(object[] x)
    {
        if (x.Length > 1)
            return x.GetValue(0);
        else
            return null;
    }static public object GetFirst(Array x)
    {
        if (x.Length > 1)
            return x.GetValue(0);
        else
            return null;
    }
    static public object GetFirst(ArrayList x)
    {
        if (x.Count > 1)
            return x[0];
        else
            return null;
    }你可以把前两个任意一个删除,可以看到GetFirst仍然可以被调用。Array可以被作为object[]的替代品,只不过因为你无法实例化(将实例化方法设置为private),所以就很少有人注意使用它了。只不过,ArrayList与Array之间的转换更明显一些罢了。其实有很多种类似的东西,在设计者的思维还没有定型时,可以相互转化。我是从来不使用ArrayList的,因为我知道它是早先很“乱”的时候的产物。
      

  4.   

    Array可以被作为object[]的替代品   -->   Array可以被隐式地作为object[]的替代品(相互转化)
      

  5.   

    ArrayList 对象集合和数组有明显的区别 ,我们用 "类型[]"方式定义的数组,你在索引的时候会返回这个"类型"的值,而ArrayList的对象比如说ArrayList arr = new ArrayList();
    arr[] 返回却不是ArrayList类型,而是object型,这个区别很明显,ArrayList内部实现是在索引内部的一个object数组.
    类似于自己定义的类写个索引器ArrayList 是个类型,这是不一样的
      

  6.   

    呵呵!这个认识不错,有自己的见解!
    首先咱们来看一下ArrayList:该对象非常类似于数组,也有人称之为数组列表;
    其次咱们来分析这段代码:ArrayList arr = new ArrayList(); ArrayList[] arr = new ArrayList[5]; 
    很显然ArrayList arr = new ArrayList(); 这是一个集合,而且是一个动态的集合,
    而ArrayList[] arr = new ArrayList[5];声明的是一个数组,这个数组是你不能去动态维护的。因此它是一个数组!
      

  7.   

    你这样看 
    ArryList 是一行 一个数组 b[]
    那么ArryList[] 就是一个表b[][]这个不就是二维数组
      

  8.   

    ArrayList 是集合,
    Array 是数组。AnyType[] a = new AnyType[n];那么 a 就是数组,是 Array 类的实例。
      

  9.   

    注意,Array 和 ArrayList 是不同的概念。
      

  10.   

     正是很多人对"ArrayList动态数组"的这种称呼使得,很多初学者,混淆了数组 和 对象集合的概念,所以很多人在学索引器的时候总是搞不清楚原理!
      

  11.   

    执着地抠字眼...重申一次...数组就是集合对象,数组是相同类型的对象的集合....数组这个名称来源于传统,但早已经超出原有的含义...再有...ArryList是一种过时的东西,.NET 2.0推出泛型之后,除了保留它提供向前的兼容性已经没有了存在的价值...就像4楼所说“早先很“乱”的时候的产物”...你有精力在这儿上面较劲儿不如去认真看看泛型的概念...
      

  12.   


    你少来了,你以为我不会用泛型吗,泛型是强类型集合,可以指定存储类型,同样存在这样的问题你能称泛型为数组吗? 我写给你看
    List<MyClass> my = new List<MyClass>();List<MyClass>[] myArr = mew List<MyClass>[5];你以为这样就不能写吗? 你懂个泛型你以为你就了不起了?你也称my是数组? 那myArr 是什么你说?一知半解就敢口出狂言?
      

  13.   

    同样List <MyClass> my = new List <MyClass>(); 
    这个其实索引的是my这个对象集合中的MyClass类型的数组,我问你!你懂不索引器?
    my[0]这个返回的是MyClass类型的对象,不是List<MyClass>的对象而List <MyClass>[] myArr = mew List <MyClass>[5];
    myArr[0]返回的是List<MyClass>的对象,这样才能称之为数组
      

  14.   

    ArrayList没人叫数组啊...一般都叫数组列表...字面的意思...还因为它很像数组...但不是...是集合
    4.2.1 集合的定义        如果一个类型满足所有下列条件,实现System.IEnumerable接口或实现集合模式,就称它是集合类型:    (1) 类型包含一个签名GetEnumerator(),返回结构类型(struct)、类类型(class)或接口类型(interface)的public实例方法。
        (2) 类型所包含的public实例方法具有签名MoveNext()和返回类型bool。它递增项计数器并在集合中存在更多项时返回true。
        (3) 类型包含一个名为Current的public实例属性,此属性允许读取当前值。此属性的类型称为该集合类型的元素类型,读取时返回是集合的当前元素。
      

  15.   


    那你就错了,你去搜索一下baidu和google "arraylist动态数组"这个关键字,你就会发现有多少人这样叫了为什么我会提这个问题,是因为这样叫法的误导,让很多人以为arraylist是数组,只不过可以动态添加,但实际上完全是2个概念,包括上面的一些人不都是被误导了的吗
      

  16.   

    谁说ArrayList不是数组?
    看看msdn:
    “ArrayList 或 List<(Of <(T>)>) 对象是较为复杂的数组”
      

  17.   

    Array
    [ə'rei]
    n. 数组,排列,陈列,大批,一系列