c#测试潜在对象列表是否包含字符串

时间:2018-04-28 21:54:46

标签: c#

所以我对c#和一般编码都很陌生,所以我希望我的问题有意义。我在网上发现了类似的问题,但我的问题非常具体。所以首先我有一个名为" Enemy"的对象类。其中有很多属性。

public class Enemy
{
    public string EName { get; set; }
    public int EHealth { get; set; }
    public int EStamina { get; set; }
    public int EPower { get; set; }

    public Enemy(string ename, int ehealth, int estamina, int epower)
    {
        EName = ename;
        EHealth = ehealth;
        EStamina = estamina;
        EPower = epower;
    }
}

然后在我的主要内容中,我列出了新的" Enemy"要添加到的对象:

List<Enemy> Enemies = new List<Enemy>();

我有一个1到4之间的随机数,它决定了会产生多少敌人,称为&#34; eNumber&#34;:

for (int i = 1; i <= eNumber; i++)
        {
            var rndmHealth = rndm.Next(6, 12);
            var rndmStamina = rndm.Next(6, 12);
            var rndmPower = rndm.Next(6, 12);
            var enemy = new Enemy($"Goblin{i}", rndmHealth, rndmStamina, rndmPower);
            Console.WriteLine($@"
{enemy.EName}:
Health:  {enemy.EHealth}
Stamina: {enemy.EStamina}
Power:   {enemy.EPower}
");
        }

所以这应该产生一个随机数量的敌人(在这种情况下,&#34; goblins&#34;),以及他们属性的随机整数。然后控制台应告诉玩家敌人的名字及其属性。我现在希望玩家能够输入他想要攻击的怪物的名字,所以就像&#34; Goblin1&#34;或者&#34; Goblin3&#34;,但是如果输入了无效的EName,我希望提示玩家再次尝试。我希望这是有道理的,谢谢你的时间!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

好吧,我几乎已经明白了这一点! 我换了

var enemy = new Enemy($"Goblin{i}", rndmHealth, rndmStamina, rndmPower);

Enemies.Add(new Enemy($"Goblin{i}", rndmHealth, rndmStamina, rndmPower));

现在,在创建时,新的敌人对象被添加到敌人列表中。但是,现在我不知道如何访问他们的房产:

Console.Writeline(enemy.EName);

^这不再适用。我现在需要知道的是这个的正确语法,我设置:] 感谢所有帮助我的人!

2 个答案:

答案 0 :(得分:0)

试试这个:

        List<Enemy> Enemies = new List<Enemy>();// Declare your list

        // Loop To populate the list 
        for (int i = 1; i <= eNumber; i++)
        {
          Enemies.Add(new Enemy($"Goblin{i}", rndm.Next(6, 12), rndm.Next(6, 12), rndm.Next(6, 12)));
        }
        // Loop Throught The Enemies, Then you can access their status 
        for (int i = 0; i < Enemies.Count; i++)
        {
            Console.WriteLine(Enemies[i].EName,Enemies[i].EHealth,Enemies[i].EStamina,Enemies[i].EPower);
        }

答案 1 :(得分:-1)

你的问题就在这里 for(int i = 0; i&lt; = Enemies.Count; i ++)     {         if(Enemies [i] .EType.Contains(ATattack))

它应该是i < Enemies.Count,因为索引是基于零的

享受