标题:数组报错
只看楼主
supermai007
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-5-27
结帖率:0
已结贴  问题点数:5 回复次数:1 
数组报错
程序代码:
      TableRow [] Rws=new TableRow[8];
            TableCell [] Cls=new TableCell[8];

            Cls[0].Text ="aaaaaaaaaaaaaaaaaaaaa";
            Rws[0].Cells.Add(Cls[0]);
            Tb1.Rows.Add(Rws[0]);



编译时是没有问题的,但是到了运行时就弹出如附件所示的报错,不懂为什么会这样了,也不懂怎么解决。
2013-07-17 15:01
Eumenides_me
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:63
专家分:151
注 册:2012-9-26
得分:5 
TableRow [] Rws=new TableRow[8];和TableCell [] Cls=new TableCell[8];都只是创建了一个数组, 并没有初始化数组的每个元素。
在创建数组时, 类似TableRow [] Rws=new TableRow[8];, 只是在栈中分配了8个引用的位置, 而此时并没有制定每个引用所对应堆中的地址, 也就是这些引用都是空引用(null), 所以在仅创建数组后, 就对其进行赋值时, 会提示未将对象引用设置到对象的实例。
解决方法:在创建对象数组后, 为每个元素进行初始化, 直接循环遍历进行初始化即可
for (int i = 0; i < Cls.Length; i++ )
    Cls[i] = new TableCell();

PS:同样的, Rws也需要初始化
PS:只有数组里的元素是对象时, 才需要进行初始化, 若数组元素为值类型(int、flaot、double...), 就不需要初始化了
2013-07-21 10:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-417484-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.056119 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved