//错误代码如下 报错:未将对象引用设置到对象的初始化
public class Matrix
{
public int Row;
public int Col;
public double[,] array;
public Matrix(int row, int col)
{
Row = row;
Col = col;
double[,] array= new double[Row, Col]; //语句(1)
}
}
static void Main(string[] args)
{
Matrix t = new Matrix(2, 3);
//t.array= new double[2, 3]; 我的改正方法:加上这句
for (int a = 0; a < 2; a++)
for (int b = 0; b < 3; b++)
t.array[a,b] = Convert.ToDouble(Console.ReadLine());
}
但是我不明白了,对象实例化时不是已经在构造函数里【语句(1)】动态分配数组的空间了吗,为什么在主函数里还需要再对数组重新分配?
语句(1)中的array是局部变量,虽然和成员变量array同名,但是在构造函数中会覆盖成员变量,构造函数语句块结束后,生命周期就结束了。
你可以将语句(1)写成this.array= new double[Row, Col];
秒懂。。。
真是个愚蠢的错误。。。白学了一年C#。。。
将
double[,] array = new double[Row, Col]; //语句(1)
改为
array = new double[Row, Col]; //语句(1)