C#报错——传递数组对象报错“未将对象引用设置到对象的实例”

问题描述:

定义一个数组作为函数的ref实参,因为要求数组暂时不定长度,所以没有实例化

如:int[] aaa;

  func(ref aaa); //调用函数

  viod func (ref bbb) //定义函数

  {

    int len = 5;

    for(i = 0; i < len; i ++)

      {

        bbb[i] = i;

      }

  }

然后就出现这样的报错了 《传递数组对象报错“未将对象引用设置到对象的实例”》

 

分析:

从字面上理解这句话为,传递的数组对象(指的是数组aaa),没有将对象引用(指定的bbb,实际也是aaa本身,因为他们是同一片地址)设置到对象的实例(指的是没有实例化数组)

因此发现我们自始至终都没有对aaa这片内存实例化

 

解决方法:

既然我们要传一个不定长度的数组,所以我们不能在调用函数前实例化aaa数组,因为实例化了就代表长度定义了,虽然解决了报错,但是到不到我们想要的效果

那我们可以在函数主体实例化数组bbb,这样就解决了问题

可以在for循环前实例化数组bbb:bbb = new int[len];

posted @ 2021-02-25 10:01  vv彭  阅读(935)  评论(0编辑  收藏  举报