提问人:Dogukan Levendoglu 提问时间:5/9/2019 更新时间:5/9/2019 访问量:82
列表将显示 null,即使在构造函数中分配也是如此
Lists will show null even though assigned in constructor
问:
public class Aitken
{
private readonly List<double> X;
private readonly List<double> Y;
public Aitken()
{
List<double> X = new List<double>() { 0, 0.5, 0.75, 1.0 };
List<double> Y = new List<double>() { 1.0, 0.6065, 0.4724, 0.3679};
}
public void Print()
{
Console.WriteLine(X == null);
Console.WriteLine(Y == null);
}
}
这是我遇到问题的例子。我启动,比如说构造函数中的两个列表。如果我立即检查构造函数中的空引用异常,一切都很好。但是,当另一个方法调用列表时,它会引发 null 引用异常。它们都是成员变量,所以我不太明白为什么会发生这种情况。感谢您抽出宝贵时间接受采访。
答:
3赞
Simply Ged
5/9/2019
#1
您正在构造函数中创建新列表
将构造函数更改为:
public Aitken()
{
X = new List<double>() { 0, 0.5, 0.75, 1.0 };
Y = new List<double>() { 1.0, 0.6065, 0.4724, 0.3679};
}
这会将列表分配给成员变量。
我建议您阅读 C# 中的变量范围以充分理解您的问题:-)
4赞
Selman Genç
5/9/2019
#2
在构造函数中,您不是在分配给类的字段,而是在创建新的局部变量并初始化它们。
您应该删除并执行以下操作:List<double>
X = new List<double>() { 0, 0.5, 0.75, 1.0 };
Y = new List<double>() { 1.0, 0.6065, 0.4724, 0.3679};
评论
List<double>
X
Y
this.X
Aitken.X