Значение по умолчанию enum
равно 0 ... Даже если для 0. не определено значение. В конце вы всегда можете (EnumType)123
для любого enum
.enum
не проверять / ограничивать их «действительные» значения.Присвойте только некоторые метки некоторым конкретным значениям.
Обратите внимание, что 0, о котором я говорил ранее, является "типизированным" значением ... Так что это (EnumType)0
, а не (int)0
... Вы можете:
object oDefault = Enum.ToObject(p.PropertyType, 0);
Работаетдаже с не-1012 * основанными на перечислениях, такими как:
enum MyEnum : long
{
}
Очевидно, что вы могли бы даже:
object oDefault = Activator.CreateInstance(p.PropertyType);
, потому что new SomeEnumType()
равно 0.