即使在构造函数中分配,列表也将显示为空

时间:2019-05-09 00:59:34

标签: c# list nullreferenceexception

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引用异常,一切都很好。但是,当另一个方法调用列表时,它将引发空引用异常。它们都是成员变量,所以我不太了解为什么会发生这种情况。谢谢您的宝贵时间。

2 个答案:

答案 0 :(得分:3)

在构造函数中,您没有分配给类的字段,而是在创建新的局部变量并对其进行初始化。

您应该删除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};

答案 1 :(得分:2)

您正在构造函数中创建新列表

将构造函数更改为此:

    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#中的可变作用域以充分了解您的问题:-)