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];