C# - 创建列表问题

时间:2014-06-16 01:21:06

标签: c#

在我的程序中,我创建了一个名为Monsters的类。它由四个不同的枚举定义:物种,稀有度,区域和类型。我正在尝试创建一个列表。这是我写的代码:

public class Monsters

{
    public Enums.Species monsterName;
    public Enums.Rarity rarity;
    public Enums.Region region;
    public Enums.Type monsterType;

    public Monsters(Enums.Species monsterName, Enums.Rarity rarity, Enums.Region region, Enums.Type monsterType)
    {
        this.monsterName = monsterName;
        this.rarity = rarity;
        this.region = region;
        this.monsterType = monsterType;
    }

    public Enums.Species getmonsterName()
    {
        return monsterName;
    }

    public Enums.Rarity getrarity()
    {
        return rarity;
    }

    public Enums.Region getregion()
    {
        return region;
    }

    public Enums.Type getmonsterType()
    {
        return monsterType;
    }

    List<Monsters> startersPokemon = new List<Monsters>();
    startersPokemon.Add(Enums.Species.PIKACHU, Enums.Rarity.rare, Enums.Region.Pallet, Enums.Type.electric);

}

当我输入我尝试添加到列表中的最后一行代码时,我不断收到错误,告诉我这是一个用作类型的字段。我该如何纠正这个问题?如果列表不是我的问题的答案,那么阵列会更好吗?

2 个答案:

答案 0 :(得分:1)

我在您的代码中发现了2个问题。

1. startersPokemon 不应在怪物类中声明。它可以是一个类:

public class MonstersList
{
    List<Monsters> startersPokemon = new List<Monsters>();
    // init startersPokemon 
    public MonstersList()
    {
        // please read 2nd point.
        startersPokemon.Add(...);
    }
}

2.您应该将an instance of Monsters添加到您的列表中。您可以将代码更改为:

startersPokemon.Add(
    new Monsters
    (
        Enums.Species.PIKACHU, 
        Enums.Rarity.rare, 
        Enums.Region.Pallet, 
        Enums.Type.electric
    )
);

答案 1 :(得分:0)

您的代码就位于类定义的中间位置。它需要在一个可以从某个地方调用的方法中。该方法可能是您已经拥有的Monsters构造函数,或者您可以创建一个单独的方法。

public void Initialize() 
{
    List<Monsters> startersPokemon = new List<Monsters>();  
    startersPokemon.Add(
    new Monsters
    (
        Enums.Species.PIKACHU, 
        Enums.Rarity.rare, 
        Enums.Region.Pallet, 
        Enums.Type.electric
    )
    );
}