По сути, вызов ToString
для любого значения enum
типа, объявленного с атрибутом [Flags]
, вернет что-то подобное для любого определенного значения:
SomeValue, SomeOtherValue
С другой стороны, если значение не , определенное в типе enum
, то ToString
просто создаст строковое представление значения integer этого значения, например :
5
Так что это означает, что если вы можете проанализировать вывод ToString
как число (не уверен, почему автор выбрал decimal
), он не определен в типе.
Вот иллюстрация:
[Flags]
enum SomeEnum
{
SomeValue = 1,
SomeOtherValue = 2,
SomeFinalValue = 4
}
public class Program
{
public static void Main()
{
// This is defined.
SomeEnum x = SomeEnum.SomeOtherValue | SomeEnum.SomeFinalValue;
Console.WriteLine(x);
// This is not (no bitwise combination of 1, 2, and 4 will produce 8).
x = (SomeEnum)8;
Console.WriteLine(x);
}
}
Вывод вышеуказанной программы:
SomeOtherValue, SomeFinalValue
8
Итак, вы можете увидеть, как работает предложенный метод.