gpt4 book ai didi

c# - 你能在运行时添加到枚举类型吗

转载 作者:IT王子 更新时间:2023-10-29 04:09:27 26 4
gpt4 key购买 nike

如果我有枚举类型:

public enum Sport
{
Tennis = 0;
Football = 1;
Squash = 2;
Volleyball = 3;
}

我可以在运行时以某种方式添加:

PingPong = 4

最佳答案

枚举有一个后备存储,如果不指定则默认为 int。可以直接分配定义值之外的值:

Sport pingPong = (Sport)4;

然后你可以检查它:

if (value == (Sport)4) {}

这就是为什么你有静态函数 Enum.IsDefined()用于检查实际值是否在预期值范围内。请注意,该函数不适用于复合标志值。

bool isValueDefined = Enum.IsDefined(typeof(Sport), value);

编辑:在 Hans Passant 的评论之后:您不必使用文字值 4。您可以使用任何返回 int 的值。例如:

Dictionary<int, string> AdditionalSports = new Dictionary<int, string>();
AdditionalSports.Add(4, "PingPong");

// Usages: if
if (AdditionalSports.ContainsKey(value))
{
// Maybe do something with AdditionalSports[value], i.e. "PingPong"
}

// In a switch:
switch (value)
{
case default:
// Since it won't be found in the enum-defined values
if (AdditionalSports.ContainsKey(value))
{
// Maybe do something with AdditionalSports[value], i.e. "PingPong"
}
}

关于c# - 你能在运行时添加到枚举类型吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779743/

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