我们假设有一个包含非有序值枚举器的枚举。在枚举中查找给定枚举数的序列号的最简单方法是什么?
答案 0 :(得分:3)
基本上你不能。这不受支持。 GetNames
和GetValues
的订单是定义的,但基于值。来自GetFields
的订单正式未定义。
答案 1 :(得分:0)
如果未正式定义GetFieldsIndex,您可能会非正式地定义
enum MyEnum { a = 5, b = 2, c = 4, d = 1, e = 3 }
public static int GetFieldIndex(this Enum value)
{
Type t = value.GetType();
var Fields = t.GetFields();
Fields = Array.FindAll(Fields, f => f.FieldType.Equals(t));
var typedFields = Array.ConvertAll(Fields, f => f.GetValue(null));
return Array.IndexOf(typedFields, value);
}
然后以简单的方式消费
MyEnum value = MyEnum.d;
Console.WriteLine(value.GetFieldIndex());