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将起作用。请将枚举更改为全局