Поле никогда не назначается и всегда будет иметь значение по умолчанию null - PullRequest
2 голосов
/ 11 октября 2011

У меня в настоящее время есть 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, в которых говорится, что они никогда не назначаются и всегда будут иметь значения по умолчанию.значение ноль, но у меня явно есть код, который их присваивает.Всякий раз, когда я пытаюсь нажать на кнопку, которая использует массивы, я получаю ошибку во время выполнения.Есть ли причина, по которой это происходит?

Ответы [ 4 ]

5 голосов
/ 11 октября 2011

Вам нужно позвонить

bArray = new bool[sizeOfArray];

где-нибудь в вашем коде, прежде чем использовать их.Кроме того, в массивах bool по умолчанию установлены все ложные значения.

1 голос
/ 11 октября 2011

Вы не создаете экземпляры своих массивов - см. http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx для получения дополнительной информации.

, например

public static bool[] bArray = new bool[sizeOfArray];
public static bool[] randomRemove = new bool[sizeOfArray];
0 голосов
/ 11 октября 2011

Вам нужно инициализировать массивы в конструкторе или там, где это имеет смысл.

public class MyClass
{
  public static bool[] bArray;

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

В вашем коде вы только назначаете элементы в массиве, что даст вам исключение NullReferenceException, потому что ваш массив = null. Вам нужно инициализировать массив.

0 голосов
/ 11 октября 2011

Вы не создавали экземпляры массивов. Попробуйте

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

вместо.

...