日期:2014-05-18  浏览次数:21080 次

放在arraylist中对象的属性问题
我写了个class1类,内有属性num=0,new出1个class1对象并把它放在arraylist l中,接着我从这个l中取出对象,放在另一个arraylist l2中,可以从l2取出来强转后发现找不到这个对象的num属性,但是能找到他的方法,为什么啊?为什么会出现这种情况,我试过很多次都这样,要是我要能想从第2个arraylist中取得属性该怎么做?

------解决方案--------------------
Class1 c1 = new Class1();
ArrayList1.Add(c1);
ArrayList2.Add((Class1)ArrayList1[0]);
((Class1)ArrayList[0]).属性
还有你的属性要设置成Public的
------解决方案--------------------
正如一楼所说,num 属性首先应该是public的,外部才能访问。

C# code

class1 c1 = new class1();

//类加入l1中
l1.Add(c1);

//从l1中取出对象加入l2中
l2.Add((class1)l1[0]);

//从l2中取出对象,并访问它的num成员
int i = ((class1)l2[0]).num;

------解决方案--------------------
改用List<>吧,不然要装箱和拆箱,效率低。
------解决方案--------------------
确实有这样的问题,按wangpanli 所说 也编译不过去,不过如果将((class1)l2[0]拿出来写,就可以解决了。

class1 c1 = new class1();

//类加入l1中
l1.Add(c1);

//从l1中取出对象加入l2中
l2.Add((class1)l1[0]);

//从l2中取出对象,并访问它的num成员
class1 aaa=((class1)l2[0];
int i=aaa.num;

这样编译就能通过了。