如何从一堆类(继承类)创建随机对象

时间:2021-05-07 12:51:36

标签: c# random binary-search-tree

如果有类似的问题,我很抱歉,尝试搜索但没有找到适合我使用的适当回复。

我有 5 个类继承自一个类 (spaceshipclass),我需要从每个类中创建随机对象并将它们存储在二叉树中。 对于每个对象,两个随机整数如下面的代码所示。

public class spaceships
{
    int cost;
    int combatPower;
    private Random rand = new Random();

     public spaceships(int cost, int combatPower)
    {
        this.cost = cost;
        this.combatPower = combatPower;

        cost = rand.Next(10000, 1000000);
        combatPower = rand.Next(20, 100);

    }

} 

public class Patrol : spaceships
{
        public Patrol (int cost,int combatPower) : base(cost,combatPower)
        {
        }
}

第二个类是继承类之一。

希望有人能帮助我。

1 个答案:

答案 0 :(得分:1)

所需的功能与发布的代码之间似乎存在脱节,因为您的 spaceships 类在其构造函数中接受了 costcombatPower,但随后忽略了这一点并进行了计算这些价值观本身。因此,我将忽略该特定实现,并在构建随机对象之前继续计算这些值,正如您的问题标题所要求的那样。请记住,我的解决方案允许您完全删除飞船类的私有 Random rand 字段。

您可以使用简单的 switch 语句来确定要创建哪种类型的飞船,然后将它们添加到您的集合中(您提到了二叉搜索树,但这是一个在这里并不重要的实现细节,只要它的类型为 spaceships 以支持您的问题提到的多态性。

Random rand = new Random();

for (int i = 0; i < numSpaceshipsRequired; i++)
{
    int typeOfSpaceship = rand.Next(0, 5);
    int cost = rand.Next(10000, 1000000);
    int combatPower = rand.Next(20, 100);
    
    switch (typeOfSpaceship)
    {
        case 0:
            collection.Add(new Patrol(cost, combatPower));
            break;
        case 1:
            collection.Add(new Cruiser(cost, combatPower));
            break;
        case 2:
            collection.Add(new Frigate(cost, combatPower));
            break;
        case 3:
            collection.Add(new Fighter(cost, combatPower));
            break;
        case 4:
            collection.Add(new Stealth(cost, combatPower));
            break;
    }
}