首页 新闻 会员 周边

关于List和ArrayList的问题

0
[已解决问题] 解决于 2012-11-02 21:56
使用ArrayList
    ArrayList array3 = new ArrayList();
    string str = string.Join(" ", array3.ToArray());
使用List
    List<string> list = new List<string>();
    string str = string.Join(" ",list);

不知道为什么,查看元数据也没找到,求高手指点

c#
问题补充:

我纠结的地方是为什么ArrayList需要调用ToArray()方法,而List不需要

轻狂の书生的主页 轻狂の书生 | 小虾三级 | 园豆:1042
提问于:2012-11-01 19:56
< >
分享
最佳答案
1

什么意思

奖励园豆:5
Qlin | 老鸟四级 |园豆:2403 | 2012-11-02 12:20

string str = string.Join(" ", array3.ToArray());

string str = string.Join(" ",list);

为什么ArrayList对象需要调用ToArray()方法,而List对象不需要

轻狂の书生 | 园豆:1042 (小虾三级) | 2012-11-02 14:28

@轻狂の书生: 

看一下参数不就知道了吗...

.net4.0以下的 需要的是数组,.net4.0 增加了 IEnumerable<T>,list 是IEnumerable<T>, 就是用的这个4.0的。

你的 ArrayList 是一个动态数组类又不是数组,又不是IEnumerable<T>,ToArray()才返回数组。

Qlin | 园豆:2403 (老鸟四级) | 2012-11-02 14:33
其他回答(2)
0

没有找到是什么意思?

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-01 22:38

没找到他俩在这方面的区别

支持(0) 反对(0) 轻狂の书生 | 园豆:1042 (小虾三级) | 2012-11-01 23:18
0

我纠结的地方是为什么ArrayList需要调用ToArray()方法,而List不需要?

 

我也没进去看过List<T>泛型的定义,如果string.join(),只能接受Array参数的话,那肯定在定义List泛型的地方肯定有个隐式的转换,让List<T>能隐式的转化成T[]。

建议你进去reflector看看。

没什么高深的东西在这边,因为.net里类型转化的除了协变逆变,就隐式转化了。

Ethan轻叹 | 园豆:996 (小虾三级) | 2012-11-02 14:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册