日期:2014-05-20  浏览次数:20764 次

使用ArrayList中存储的对象,直接类型转化不可以用?
比如
ArrayList   MyArray;
MyArray.Add(myclass);//myclass是testclass的实例

(testclass)MyArray[0]这样用不了


testclass   temp=MyArray[0]   as   testclass;
用temp就可以

本来就是这样的?




------解决方案--------------------
可以这样,贴出别的代码??

------解决方案--------------------
((testclass)MyArray[0]).
这样用
------解决方案--------------------
(testclass)MyArray[0]
这样进行拆箱可以啊。。
------解决方案--------------------
vs2003可以这么写(testclass)MyArray[0]
vs2005要这么写((testclass)MyArray[0])
多一重括号
------解决方案--------------------
像这个问题如果在VS2005解决就好了,用泛型类来处理,比如
List <testclass> list = new List <testclass>
list.Add(new testclass ())

list[0]....
------解决方案--------------------
是么?
我怎么就可以呢。。。

IList list = new ArrayList();
list.Add( "wodao ");

string text = (string)list[0];
------解决方案--------------------
TO:vs2003可以这么写(testclass)MyArray[0]
vs2005要这么写((testclass)MyArray[0])


2003的可以?没试过...
------解决方案--------------------
hbxtlhx(平民百姓)的办法不错,用泛型可以很好解决问题:

List <T>
Queue <T>
LinkedList <T>

都可以解决问题。。。

------解决方案--------------------
泛型..
------解决方案--------------------
不管2003还是2005,如果要继续往后面写 .func() 之类的,都必须要加括号的

应该不存在2003可以不加括号2005必须加括号的情况

MyArray[0] as testclass;

(testclass)MyArray[0]
的惟一区别是当(因为意外情况?)MyArray[0]的类型不是testclass或不能转为testclass时,前者返回一个null,后者抛出异常. 其他情况两种写法一样.