c# - 从类中挑选随机对象

标签 c# class if-statement random

所以我从我的类 Player 中制作了这些对象

Player Silva = new Player("André Silva", 2, 5);
Player Moses = new Player("Victor Moses", 3, 3);
Player Batshuayi = new Player("Michy Batshuayi", 3, 4);
Player Medel = new Player("Gary Medel", 4, 4);

然后我有来 self 的类​​ Club 的对象 (不要担心其中任何一个的值(value),对于那些不知道的人来说只是与足球相关的东西)

Club Barcelona = new Club("FC Barcelona", 5);
Club RealMadrid = new Club("Real Madrid", 5);
Club Inter = new Club("Inter", 4);
Club Liverpool = new Club("Liverpool", 4);

无论如何,我想随机抽取一名球员和一支俱乐部,并在 if 语句中比较他们的值(value)。截至目前,我已将所有这些放入 arrays

int[] Playerability = {Silva.ability,Moses.ability,Batshuayi.ability,Medel.ability};
int[] Clubrating = { Barcelona.clubrating, RealMadrid.clubrating, Inter.clubrating};

所以我可以使用一个简单的随机数并将该变量放入数组中

int randomclub = randomnumber.Next(16);
int randomplayer = randomnumber.Next(28);

if (Playerability[randomplayer] >= Clubrating[randomclub] ||
    Playerpotential[randomplayer] >= Clubrating[randomclub])

但是如果我想要更多的对象,这似乎非常无用,所以我想知道是否有更简单的解决方案?抱歉,如果它很明显,但我似乎找不到它。语言是 c# btw

最佳答案

处理此问题的一种方法是在您的 Club 和 Player 类中有一个静态列表,其中将填充您的程序创建的不同实例。该列表将通过在列表中添加新创建的实例来填充到您的类的构造函数中。

例如,对于您的 Player 类,您将拥有:

public class Player
{
    // Static list keeping all your instances
    public static List<Player> players = new List<Player>();

    // Constructor
    public Player(/* Your different parameters */)
    {
        // Your class initialization

        players.Add(this);
    }

    // Rest of your class definition
}

然后你就可以选择了。您可以在您的类中添加一个静态方法来获取此列表的随机元素,如下所示:

public static Player GetRandomPlayer()
{
    Player player = players[randomnumber.Next(players.Length)];

    return player;
}

或者通过以下方式在您的代码中简单地调用它:

Player player = Player.players[randomnumber.Next(Player.players.Length)];

最后,如果您也将相同的想法应用于您的 Club 类,您的 if 语句将如下所示:

Player player = Player.GetRandomPlayer();
Club club = Club.GetRandomClub();

if (player.ability >= club.clubrating || player.potential >= club.clubrating)
{
    // What you want to do at that point
}

关于c# - 从类中挑选随机对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217218/

相关文章:

r - R中多个ifelse的替代品

c# - 在两个继承的 Razor View 之间共享共同点

c# - 如何在 Visual Studio for OSX 上搭建项目基架

python - 在 Python 3 中调用 super() 之前覆盖父类属性

python - 在 python 中调用 int 的 __init__ 看似微不足道的问题

C++:将成对的类对象插入到映射中

javascript - 我正在学习 JavaScript。我的 if 与 && 似乎是正确的,但是

c# - finally block 的隐藏功能?

多单位转换的C#数据结构

c - book[] in if 语句错误