gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:17:05 25 4
gpt4 key购买 nike

我需要声明一个枚举列表,但我不知道如何正确地做。

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

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]**);
}
}

如您所见,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));

但我想编写尽可能流畅的代码...顺便说一句:如果您看到任何其他不良做法:请告诉我。我正在努力改进。

最佳答案

如果不更改 Player 的代码,您可以:

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

如果您愿意接受更改,params FoolMeLib.Languages[] languages 参数将允许:

NewGame.AddPlayer(new FoolMeLib.Player("Player A",
FoolMeLib.Languages.Ger, FoolMeLib.Languages.Eng));

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

NewGame.AddPlayer(new FoolMeLib.Player("Player A",
FoolMeLib.Languages.Ger | FoolMeLib.Languages.Eng));

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

关于c# - 如何在 C# 中声明枚举列表<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com