【发布时间】:2014-02-02 06:26:03
【问题描述】:
如果我有值:“狗”和枚举:
public enum Animals
{
dog = 0 ,
cat = 1 ,
rat = 2
}
我如何从 Animals 中得到值“dog”的 0?
编辑:
我想知道是否有类似访问的索引。更常见:如何获取字符串值的整数。
【问题讨论】:
标签: c# enums enumeration
如果我有值:“狗”和枚举:
public enum Animals
{
dog = 0 ,
cat = 1 ,
rat = 2
}
我如何从 Animals 中得到值“dog”的 0?
编辑:
我想知道是否有类似访问的索引。更常见:如何获取字符串值的整数。
【问题讨论】:
标签: c# enums enumeration
只需将您的枚举值转换为整数:
Animals animal = Animals.dog;
int value = (int)animal; // 0
编辑:如果你有枚举值的名称,则解析枚举值并将其转换为整数:
int value = (int)Enum.Parse(typeof(Animals), "dog");
【讨论】:
how could I get 0 for the value "dog"
回答你的问题“我怎样才能得到字符串值的整数”:
要将字符串转换为枚举,然后将生成的枚举转换为 int,可以这样做:
public enum Animals
{
dog = 0,
cat = 1,
rat = 2
}
...
Animals answer;
if (Enum.TryParse("CAT", true, out answer))
{
int value = (int) answer;
Console.WriteLine(value);
}
顺便说一句,正常的枚举命名约定规定你不应该复数你的枚举名称,除非它代表可以设置多个位的标志值(2 的幂) - 所以你应该称之为Animal,而不是Animals .
【讨论】:
您可以cast it to Int 或使用Enum.GetValues 方法迭代所有值,该方法检索指定枚举中常量值的数组。
【讨论】:
怎么样:var r = (int)Animals.dog
【讨论】:
"dog"解析为Animals.dog