【问题标题】:Add multiple pictureboxes to form in C# from array从数组中添加多个图片框以在 C# 中形成
【发布时间】:2017-10-14 10:47:24
【问题描述】:

我试图制作一个使用数组来存储入侵者的太空入侵者游戏,但每次我运行代码时它都会冻结并出现关于我的数组大小错误的错误。

错误:

在 mscorlib.dll 中发生了“System.OutOfMemoryException”类型的未处理异常

有人可以帮忙吗?这是我的代码:

class invaders
    {
        ingame game = new ingame();
        PictureBox[] spaceinvaders = new PictureBox[100];
        public void spawn(int level)
        {
            PictureBox invader = new PictureBox();
            Bitmap img = (WindowsFormsApplication1.Properties.Resources.SpaceInvader);
            for (int n = 1; n == 3 + level; n++)
            {
                for (int i = 12; i == 493; i = i + 37)
                {
                    invader = new PictureBox();
                    invader.Size = new Size(12, 12);
                    invader.Image = img;
                    spaceinvaders[i] = invader;

                    spaceinvaders[i].Location = new Point(i, n);
                }
            }
            game.Controls.AddRange(spaceinvaders);
        }
    }

【问题讨论】:

  • 请给我们确切的错误信息
  • 在 mscorlib.dll 中发生了“System.OutOfMemoryException”类型的未处理异常
  • 在哪一行?
  • 请注意,您的示例中的任何for 循环都不能输入,因为基本条件分别为1 == 3 + x12 == 943。在这种情况下,您需要使用< 符号。
  • 我把 == 改成了

标签: c# arrays


【解决方案1】:

for 循环的条件错误。您需要使用< 符号而不是==。每次迭代都会检查中间表达式,只有当检查的输出为true时,循环执行才会继续。

既然您要求内部循环从12 转到493,它就会这样做。除了493100 多,因此数组是在其边界之外访问的,因此您应该得到一个“数组越界”异常。

我无法重现您的错误。请修复您的代码,使其可重现。

【讨论】:

  • 我怎样才能让它重现?
  • 我收到错误更改为“mscorlib.dll 中发生'System.StackOverflowException' 类型的未处理异常”说我需要通过更改来确保我没有无限循环所有的 "==" 到 "
猜你喜欢
  • 2018-08-25
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 2018-01-07
相关资源
最近更新 更多