注册 登录
编程论坛 ASP.NET技术论坛

数组报错

supermai007 发布于 2013-07-17 15:01, 543 次点击
程序代码:
      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]);



编译时是没有问题的,但是到了运行时就弹出如附件所示的报错,不懂为什么会这样了,也不懂怎么解决。
只有本站会员才能查看附件,请 登录
1 回复
#2
Eumenides_me2013-07-21 10:32
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...), 就不需要初始化了
1