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