枚举作为参数:获取名称和索引

时间:2013-11-08 16:11:15

标签: c#

我有一个这样的枚举:

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

2 个答案:

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