0

我有一个这样的枚举:

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);    
   ...
}
4

2 回答 2

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 };

在这种情况下,转换将失去精度。

于 2013-11-08T16:11:52.600 回答
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;
}
于 2013-11-08T16:27:59.287 回答