使用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,后者抛出异常. 其他情况两种写法一样.