字段永远不会分配给并且始终将其默认值保留为null

时间:2011-10-11 18:51:44

标签: c# null warnings default-value runtime-error

我目前在

定义的类文件中有2个bool数组
public static bool[] bArray;
public static bool[] randomRemove;

我这样填写bArray

public static void fillArray()
{
    for (int x = 0; x < 54; x++)
    {
        bArray[x] = false;
    }
}

我这样填写randomRemove

for (int i = 0; i < sizeOfArray; i++)
{
    randomRemove[i] = false;
}

其中sizeOfArray是我使用的字符串数组的长度。

我对每个bool数组都有两个警告,表示它们从未被分配给它,并且它的默认值总是为null但我显然有代码分配它们。每当我尝试单击使用数组的按钮时,我都会遇到运行时错误。这有什么原因吗?

4 个答案:

答案 0 :(得分:5)

您需要致电

bArray = new bool[sizeOfArray];
在您使用它们之前,在代码中的某处。此外,bool数组默认为所有falses。

答案 1 :(得分:1)

您没有实例化数组 - 有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx

e.g。

public static bool[] bArray = new bool[sizeOfArray];
public static bool[] randomRemove = new bool[sizeOfArray];

答案 2 :(得分:0)

您没有创建数组的实例。试试

public static bool[] bArray = new bool[54]();
public static bool[] randomRemove = new bool[sizeofarray]();

代替。

答案 3 :(得分:0)

您需要在构造函数中初始化数组或在有意义的地方初始化数组。

public class MyClass
{
  public static bool[] bArray;

  static MyClass()
  {
    bArray = new bool[54];
  }
}

在您的代码中,您只分配数组中的项,这将为您提供NullReferenceException,因为您的array = null。您需要初始化数组。