如题定义
ArrayList arr = new ArrayList();ArrayList[] arr = new ArrayList[5];我认为ArrayList的对象不能称之为数组,因为我们操作的其实是arr这个对象中的数组,我觉得称之为集合对象更恰当,大家怎么看很多人会把上面的两句定义搞混!将ArrayList的对象称之为动态数组,我觉得不恰当.
ArrayList arr = new ArrayList();ArrayList[] arr = new ArrayList[5];我认为ArrayList的对象不能称之为数组,因为我们操作的其实是arr这个对象中的数组,我觉得称之为集合对象更恰当,大家怎么看很多人会把上面的两句定义搞混!将ArrayList的对象称之为动态数组,我觉得不恰当.
{
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的,因为我知道它是早先很“乱”的时候的产物。
arr[] 返回却不是ArrayList类型,而是object型,这个区别很明显,ArrayList内部实现是在索引内部的一个object数组.
类似于自己定义的类写个索引器ArrayList 是个类型,这是不一样的
首先咱们来看一下ArrayList:该对象非常类似于数组,也有人称之为数组列表;
其次咱们来分析这段代码:ArrayList arr = new ArrayList(); ArrayList[] arr = new ArrayList[5];
很显然ArrayList arr = new ArrayList(); 这是一个集合,而且是一个动态的集合,
而ArrayList[] arr = new ArrayList[5];声明的是一个数组,这个数组是你不能去动态维护的。因此它是一个数组!
ArryList 是一行 一个数组 b[]
那么ArryList[] 就是一个表b[][]这个不就是二维数组
Array 是数组。AnyType[] a = new AnyType[n];那么 a 就是数组,是 Array 类的实例。
你少来了,你以为我不会用泛型吗,泛型是强类型集合,可以指定存储类型,同样存在这样的问题你能称泛型为数组吗? 我写给你看
List<MyClass> my = new List<MyClass>();List<MyClass>[] myArr = mew List<MyClass>[5];你以为这样就不能写吗? 你懂个泛型你以为你就了不起了?你也称my是数组? 那myArr 是什么你说?一知半解就敢口出狂言?
这个其实索引的是my这个对象集合中的MyClass类型的数组,我问你!你懂不索引器?
my[0]这个返回的是MyClass类型的对象,不是List<MyClass>的对象而List <MyClass>[] myArr = mew List <MyClass>[5];
myArr[0]返回的是List<MyClass>的对象,这样才能称之为数组
4.2.1 集合的定义 如果一个类型满足所有下列条件,实现System.IEnumerable接口或实现集合模式,就称它是集合类型: (1) 类型包含一个签名GetEnumerator(),返回结构类型(struct)、类类型(class)或接口类型(interface)的public实例方法。
(2) 类型所包含的public实例方法具有签名MoveNext()和返回类型bool。它递增项计数器并在集合中存在更多项时返回true。
(3) 类型包含一个名为Current的public实例属性,此属性允许读取当前值。此属性的类型称为该集合类型的元素类型,读取时返回是集合的当前元素。
那你就错了,你去搜索一下baidu和google "arraylist动态数组"这个关键字,你就会发现有多少人这样叫了为什么我会提这个问题,是因为这样叫法的误导,让很多人以为arraylist是数组,只不过可以动态添加,但实际上完全是2个概念,包括上面的一些人不都是被误导了的吗
看看msdn:
“ArrayList 或 List<(Of <(T>)>) 对象是较为复杂的数组”
[ə'rei]
n. 数组,排列,陈列,大批,一系列