使用方法创建实例化的类数组

时间:2014-12-25 00:48:51

标签: c# arrays methods initialization

我有一个类“子弹”,我使用方法CreateBullet()实例化,因为将有多个子弹我决定我应该制作子弹数组,虽然这没有用,我已经花了一小时试图解决它。

我在Initialize方法中调用的内容:

Bullet bullet[] = Bullet.CreateBullet[1]();

Bullet类:

class Bullet
{
    public float2 position;
    public float angle { get; set; }
    public float speed { get; set; }
    public static Bullet CreateBullet()
    {
        Bullet bullet = new Bullet()
        {
            position = new float2()
        };
        return bullet;
    }
    public void Move()
    { 
    }
}

你能告诉我代码有什么问题吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

通过这个,您可以创建一个包含5个项目符号的数组:

        Bullet[] bullets = new Bullet[5];

然后你需要通过为每个数组条目创建一个项目符号来填充数组:

        for (int i = 0; i < bullets.Length; i++)
        {
            bullets[i] = Bullet.CreateBullet(); 
        }

您可以将此逻辑包装在一个函数中:

    public Bullet[] CreateBullets(int amount)
    {
        Bullet[] bullets = new Bullet[amount];
        for (int i = 0; i < bullets.Length; i++)
        {
            bullets[i] = Bullet.CreateBullet(); 
        }

        return bullets;
    }

然后您可以使用函数初始化数组:

    public void Test()
    {
        Bullet[] bullets = CreateBullets(5);
    }

答案 1 :(得分:0)

你可以做这样的事情,不是你想要实现的目标,但它可能会激励你更多

用法

// Create your bullets
var bullets = new List<Bullet>();

// Create a raw/empty bullet with default properties 
var newBullet1 = new Bullet();

// Create bullet with some initialized properties
var newBullet2 = new Bullet()
   {
      Angle = 35, 
      Position = 0, 
      Speed = 200
   };

bullets.Add(newBullet1);
bullets.Add(newBullet2);

有趣的东西

// Move all your bullets at once
foreach (var bullet in bullets)
{
   bullet.Move();
}