我有一个这样的枚举:
public enum Global
{
txt_test = 123
}
现在我想使用这样的电话:
var text = lib.Get(Global.txt_test);
方法:
public TextString Get(Enum enumeration)
{
string name = enumeration.ToString();
int index = ?; // (int)enumeration not working
...
}
在这种情况下如何获取枚举的索引? 或者我做错了什么?
谢谢。
解决方案:
public TextString Get(Enum enumeration)
{
string name = enumeration.ToString();
int index = Convert.ToInt32(enumeration);
...
}
答案 0 :(得分:5)
Enum可转换为int
以检索其值:
public TextString Get(Enum enumeration)
{
string name = enumeration.ToString();
int index = Convert.ToInt32(enumeration);
// ...
return null;
}
请注意,这将起作用,因为默认情况下您的枚举类型为int。枚举仍然可以是其他值类型,如long:
enum Range : long { Max = 2147483648L, Min = 255L };
在这种情况下,转换将失去精确度。
答案 1 :(得分:0)
如果您只需要枚举值(您称之为“索引”)作为字符串,最好的方法是使用自定义格式字符串,如下所示:http://msdn.microsoft.com/en-us/library/c3s1ez6e%28v=vs.110%29.aspx
例如:
public TextString Get(Enum enumeration)
{
string index = enumeration.ToString("D");
// ...
return null;
}