如何在C#中声明枚举列表<>

Ste*_*eck 3 c# enums c#-4.0

我需要声明一个枚举列表,我无法弄清楚如何正确地做到这一点.

到目前为止这是我的代码:

public enum Languages
{
    Ger,Eng,Fra,Ita,Rus
}

public class Player
{
    public string ID { get; private set; }
    private List<Languages> Languages;

    public Player(string ID, List<Languages> LangList)
    {
        this.ID = ID;
        this.Languages = LangList;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Player PlayerA = new Player("Player A", **[Problem is here]**);
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,Player的构造函数需要播放器支持的语言列表.我想将可能的语言定义为枚举.现在我不知道如何在构造调用中声明这样的列表.

我知道我可以这样做:

        List<FoolMeLib.Languages> pLang = new List<FoolMeLib.Languages>;
        pLang.Add(FoolMeLib.Languages.Ger);
        pLang.Add(FoolMeLib.Languages.Eng);
        NewGame.AddPlayer(new FoolMeLib.Player("Player A", pLang));
Run Code Online (Sandbox Code Playgroud)

但是我想尽可能地编写代码......顺便说一句:如果你看到其他任何不好的做法:告诉我.我正在努力改进.

Mar*_*ell 12

如果没有代码更改Player,您可以:

NewGame.AddPlayer(new FoolMeLib.Player("Player A",
    new List<FoolMeLib.Language> {
        FoolMeLib.Languages.Ger, FoolMeLib.Languages.Eng
}));
Run Code Online (Sandbox Code Playgroud)

如果您对更改进行打开,则params FoolMeLib.Languages[] languages参数将允许:

NewGame.AddPlayer(new FoolMeLib.Player("Player A",
    FoolMeLib.Languages.Ger, FoolMeLib.Languages.Eng));
Run Code Online (Sandbox Code Playgroud)

或者,如果您允许枚举为[Flags]- 只需要一个参数:

NewGame.AddPlayer(new FoolMeLib.Player("Player A",
    FoolMeLib.Languages.Ger | FoolMeLib.Languages.Eng));
Run Code Online (Sandbox Code Playgroud)

(但他们需要2 n范围内的特定数字)