Объявление массива из класса в C # - PullRequest
4 голосов
/ 06 ноября 2019

Я хочу создать массив из "Рекордов" объектов, которые я определил с помощью класса.
Я всегда получаю исключение NullReferenceException при попытке установить или прочитать значение определенного массиваcontent.

Он работает, когда я использую один объект Highscore вместо массива.

Он также работает, когда я использую целочисленный массив вместо массива Highscore.

Код

class Highscore
{
    public int score;
}
class Program
{
    static void Main()
    {
        Highscore[] highscoresArray = new Highscore[10];
        highscoresArray[0].score = 12;
        Console.WriteLine(highscoresArray[0].score);
        Console.ReadLine();
    }
}

System.NullReferenceException:

highscoresArray [] был нулевым.

Ответы [ 5 ]

7 голосов
/ 06 ноября 2019

в этом коде:

Highscore[] highscoresArray = new Highscore[10];

вы создаете экземпляр массива Highscore объектов, но не создаете экземпляр каждого объекта в массиве.

вам нужно затем сделать

for(int i = 0; i < highscoresArray.Length; i++)
    highscoresArray[i]  = new Highscore();
1 голос
/ 06 ноября 2019

Это потому, что вы создали массив, задали его длину, но на самом деле не создали каких-либо его элементов. Один из способов сделать это будет:

Highscore[] highscoresArray = new Highscore[10];
highscoresArray[0] = new Highscore();
1 голос
/ 06 ноября 2019

Сначала необходимо добавить рекорд в массив, например:

highscoresArray[0] = new Highscore();
0 голосов
/ 06 ноября 2019

.. Или используйте Struct

struct Highscore
{
    public int score;
}
0 голосов
/ 06 ноября 2019

Может быть, вам нужно инициализировать каждый элемент массива:

 for (int i = 0; i < highscoresArray.length; i++)
 {
      highscoresArray[i] = new Highscore();
 }
...