如果ArrayList的对象叫数组,那么ArrayList[]的对象叫什么?

roki_chen 2009-03-14 12:25:42
如题定义
ArrayList arr = new ArrayList();

ArrayList[] arr = new ArrayList[5];

我认为ArrayList的对象不能称之为数组,因为我们操作的其实是arr这个对象中的数组,我觉得称之为集合对象更恰当,大家怎么看

很多人会把上面的两句定义搞混!

将ArrayList的对象称之为动态数组,我觉得不恰当.
...全文
220 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
小竹林2014 2009-08-25
  • 打赏
  • 举报
回复
这个叫法的问题相差无几

数组和数组列表 难道有人连后面的几个字都省掉了?还是和数组自创融合了...

我看教科书上说的数组列表的
英文翻译过来也是
soaringbird 2009-08-24
  • 打赏
  • 举报
回复
谁说ArrayList不是数组?
看看msdn:
“ArrayList 或 List<(Of <(T>)>) 对象是较为复杂的数组”
robin521 2009-08-24
  • 打赏
  • 举报
回复
round 5:
roki_chen 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 sunsik1986 的回复:]
有很多错误的帖子的...你最好去百科(比较权威点)

这个叫法的问题相差无几

数组和数组列表  难道有人连后面的几个字都省掉了?还是和数组自创融合了...

我看教科书上说的数组列表的
英文翻译过来也是


[/Quote]

你思路怎么这么混乱答非所问,我是在纠正这个问题,并不是说我不清楚这个问题

这里没讨论功能什么的问题,我只是在区分这两个概念,请看清楚问题再回答!
微创社(MCC) 2009-08-24
  • 打赏
  • 举报
回复
Array
[ə'rei]
n. 数组,排列,陈列,大批,一系列
roki_chen 2009-03-15
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 Sunsik1986 的回复:]
ArrayList没人叫数组啊...一般都叫数组列表...字面的意思...还因为它很像数组...但不是...是集合


4.2.1 集合的定义

如果一个类型满足所有下列条件,实现System.IEnumerable接口或实现集合模式,就称它是集合类型:

(1) 类型包含一个签名GetEnumerator(),返回结构类型(struct)、类类型(class)或接口类型(interface)的public实例方法。
(2) 类型所包含的public实例方法具有签名MoveNext()和返回类…
[/Quote]

那你就错了,你去搜索一下baidu和google "arraylist动态数组"这个关键字,你就会发现有多少人这样叫了

为什么我会提这个问题,是因为这样叫法的误导,让很多人以为arraylist是数组,只不过可以动态添加,

但实际上完全是2个概念,包括上面的一些人不都是被误导了的吗
Sunsik1986 2009-03-15
  • 打赏
  • 举报
回复
ArrayList没人叫数组啊...一般都叫数组列表...字面的意思...还因为它很像数组...但不是...是集合


4.2.1 集合的定义

如果一个类型满足所有下列条件,实现System.IEnumerable接口或实现集合模式,就称它是集合类型:

(1) 类型包含一个签名GetEnumerator(),返回结构类型(struct)、类类型(class)或接口类型(interface)的public实例方法。
(2) 类型所包含的public实例方法具有签名MoveNext()和返回类型bool。它递增项计数器并在集合中存在更多项时返回true。
(3) 类型包含一个名为Current的public实例属性,此属性允许读取当前值。此属性的类型称为该集合类型的元素类型,读取时返回是集合的当前元素。
Sunsik1986 2009-03-15
  • 打赏
  • 举报
回复
我晕...动态数组是数组....不过不能老数组数组的叫吧....(就好像人是动物...但不能老动物动物的叫..这样低级话了...要叫也叫高级动物...)
动态数组派生于数组....功能比数组强大....这样不是体现不出它的强大了....数组不具备动态添加和移除等功能...
而集合具备...你叫集合更加好些吧....
Sunsik1986 2009-03-15
  • 打赏
  • 举报
回复
有很多错误的帖子的...你最好去百科(比较权威点)

这个叫法的问题相差无几

数组和数组列表 难道有人连后面的几个字都省掉了?还是和数组自创融合了...

我看教科书上说的数组列表的
英文翻译过来也是

  • 打赏
  • 举报
回复
例如我们可以写
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的,因为我知道它是早先很“乱”的时候的产物。
ycsno1 2009-03-14
  • 打赏
  • 举报
回复
数组是一个类型的集合,ArrayList[]就是ArrayList的一个集合,而ArrayList本身表示一些对象的集合(存放的对象的类型可以不一样).不知道这样说,楼主明白不?
  • 打赏
  • 举报
回复
.net framework中还有一种Array类型(所有.net平台下的语言都可以使用)。那么你的问题岂不是更多啦?!
vrhero 2009-03-14
  • 打赏
  • 举报
回复
数组本来就是集合对象,可按需动态增加的数组叫动态数组没什么不恰当,数组的数组就不是数组了吗?

抠字眼以前先把语文学好...
roki_chen 2009-03-14
  • 打赏
  • 举报
回复
同样List <MyClass> my = new List <MyClass>();
这个其实索引的是my这个对象集合中的MyClass类型的数组,我问你!你懂不索引器?
my[0]这个返回的是MyClass类型的对象,不是List<MyClass>的对象



而List <MyClass>[] myArr = mew List <MyClass>[5];
myArr[0]返回的是List<MyClass>的对象,这样才能称之为数组
roki_chen 2009-03-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 vrhero 的回复:]
执着地抠字眼...

重申一次...数组就是集合对象,数组是相同类型的对象的集合....数组这个名称来源于传统,但早已经超出原有的含义...

再有...ArryList是一种过时的东西,.NET 2.0推出泛型之后,除了保留它提供向前的兼容性已经没有了存在的价值...就像4楼所说“早先很“乱”的时候的产物”...

你有精力在这儿上面较劲儿不如去认真看看泛型的概念...
[/Quote]

你少来了,你以为我不会用泛型吗,泛型是强类型集合,可以指定存储类型,同样存在这样的问题

你能称泛型为数组吗? 我写给你看
List<MyClass> my = new List<MyClass>();

List<MyClass>[] myArr = mew List<MyClass>[5];

你以为这样就不能写吗? 你懂个泛型你以为你就了不起了?

你也称my是数组? 那myArr 是什么你说?

一知半解就敢口出狂言?
cppfaq 2009-03-14
  • 打赏
  • 举报
回复
呵呵,直译的结果啥
vrhero 2009-03-14
  • 打赏
  • 举报
回复
执着地抠字眼...

重申一次...数组就是集合对象,数组是相同类型的对象的集合....数组这个名称来源于传统,但早已经超出原有的含义...

再有...ArryList是一种过时的东西,.NET 2.0推出泛型之后,除了保留它提供向前的兼容性已经没有了存在的价值...就像4楼所说“早先很“乱”的时候的产物”...

你有精力在这儿上面较劲儿不如去认真看看泛型的概念...
roki_chen 2009-03-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lookupwtd 的回复:]
你这样看
ArryList 是一行 一个数组 b[]
那么ArryList[] 就是一个表b[][]这个不就是二维数组
[/Quote]

不是这样看那样看的问题,我对这个两个概念区分的非常清楚,而是你们总是用这样看那样看的观点,去混淆这两个概念,误导很多初学者
roki_chen 2009-03-14
  • 打赏
  • 举报
回复
正是很多人对"ArrayList动态数组"的这种称呼使得,很多初学者,混淆了数组 和 对象集合的概念,所以很多人在学索引器的时候总是搞不清楚原理!
ProjectDD 2009-03-14
  • 打赏
  • 举报
回复
数组的数组,类似于

object[][]
加载更多回复(7)

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧