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

C# 枚举作为参数:获取名称和索引,c#,C#,我有这样一个枚举: public enum Global { txt_test = 123 } var text = lib.Get(Global.txt_test); 现在我想用这样一个电话: public enum Global { txt_test = 123 } var text = lib.Get(Global.txt_test); 方法: public TextString Get(Enum enumeration) { string name = enumera

我有这样一个枚举:

public enum Global
{
  txt_test = 123
}
var text = lib.Get(Global.txt_test);
现在我想用这样一个电话:

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);    
   ...
}
可转换为
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 };
在这种情况下,转换将失去精度。

可转换为
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 };

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

如果只需要枚举值(您称之为“索引”)作为字符串,最好的方法是使用自定义格式字符串,如下所述:

例如:

public TextString Get(Enum enumeration)
{
  string index = enumeration.ToString("D");

  // ...
  return null;
}

如果只需要枚举值(您称之为“索引”)作为字符串,最好的方法是使用自定义格式字符串,如下所述:

例如:

public TextString Get(Enum enumeration)
{
  string index = enumeration.ToString("D");

  // ...
  return null;
}

你说的“索引”是什么意思?您希望得到什么值?为什么?在本例中,我的意思是123什么是
TextString
类型?这只是我的枚举。您所说的“索引”是什么意思?您希望得到什么值?为什么?在本例中,我的意思是123什么是
TextString
类型?这只是我的枚举。无法将System.enum类型转换为int@K.D.:我更新了我的答案。强制转换无法工作,因为您操作的是枚举的基类。Convert.ToInt32将起作用。将枚举更改为全局无法将System.Enum转换为类型int@K.D.:我更新了我的答案。强制转换无法工作,因为您操作的是枚举的基类。Convert.ToInt32将起作用。请将枚举更改为全局