我正在尝试用 C# 制作一个简单的基于文本的游戏。我想实现这一点的方法是向表单添加标签(而不是使用命令提示符)。我在将它们添加到屏幕时遇到一些问题。 Visual Studio 给出了一个未指定的错误(只是说我有一个未处理的异常):
你调用的对象是空的
当我尝试使用数组用这些标签填充屏幕时。代码:
private void Main_Game_Load(object sender, EventArgs e)
{
Label[] Enemies = new Label[20];
Label[] Projectile = new Label[5];
Font font = new Font(new System.Drawing.FontFamily("Microsoft Sans Serif"), 12);
Random rand = new Random();
Point point = new Point(rand.Next(500), rand.Next(500));
for (int i = 0; i < Enemies.Length; i++)
{
Enemies[i].Text = "E";
Enemies[i].Font = font;
Enemies[i].BackColor = ColorTranslator.FromHtml("#000000");
Enemies[i].Location = point;
Enemies[i].Size = new Size(12, 12);
Enemies[i].Name = "Enemy"+i.ToString();
this.Controls.Add(Enemies[i]);
}
}
我想知道问题可能隐藏在哪里?我已经用谷歌搜索过它,我的代码似乎应该可以工作(除了现在点在尝试填充时不会随机化)。
这行代码创建一个空数组(即每个元素不引用任何内容)来存储最多 20 个标签:
Label[] Enemies = new Label[20];
您必须显式创建数组中的每个标签:
for (int i = 0; i < Enemies.Length; i++)
{
//creates a new label and stores a reference to it into i element of the array
Enemies[i] = new Label();
//...
}
From 一维数组(C# 编程指南):
SomeType[] array4 = new SomeType[10];
该语句的结果取决于 SomeType 是否是一个值
类型或引用类型。如果它是值类型,则该语句创建
一个包含 10 个元素的数组,每个元素的类型均为 SomeType。如果
SomeType是引用类型,该语句创建一个10的数组
元素,每个元素都初始化为空引用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)