C# 从C中的类声明数组

C# 从C中的类声明数组,c#,arrays,class,declare,C#,Arrays,Class,Declare,我想创建一个用类定义的Highscore对象数组。 当我试图设置或读取特定数组内容的值时,总是会出现NullReferenceException 当我使用单个Highscore对象而不是数组时,它确实起作用 当我使用整数数组而不是高分数组时,它也可以工作 代码 System.NullReferenceException: highscoresArray[]为空。在此代码中: Highscore[] highscoresArray = new Highscore[10]; 实例化Highscor

我想创建一个用类定义的Highscore对象数组。 当我试图设置或读取特定数组内容的值时,总是会出现NullReferenceException

当我使用单个Highscore对象而不是数组时,它确实起作用

当我使用整数数组而不是高分数组时,它也可以工作

代码

System.NullReferenceException:

highscoresArray[]为空。

在此代码中:

Highscore[] highscoresArray = new Highscore[10];
实例化Highscore对象的数组,但不实例化数组中的每个对象

你需要这样做

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

可能需要初始化数组的每个项:

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

您必须首先向数组添加高分,例如:

highscoresArray[0] = new Highscore();

这是因为您创建了一个数组,设置了它的长度,但从未实际实例化过它的任何元素。一种方法是:

Highscore[] highscoresArray = new Highscore[10];
highscoresArray[0] = new Highscore();
。。或者使用结构

struct Highscore
{
    public int score;
}

Highscore[]highscoresArray=Enumerable.Range0,10。选择X=>new Highscore.ToArray;检查这一条:结构的缺点/优点是什么?@JoshuaDrake在这种情况下特别需要-不需要初始化。评论来自审查队列,我们希望答案包括原因,而不仅仅是代码。
struct Highscore
{
    public int score;
}