Pet*_*ris 11 c# compiler-construction enums
我花了一些时间试图理解为什么我的WPF应用程序没有数据绑定到枚举属性属性,这是原因.
static void Main(string[] args)
{
MyEnum x = 0;
Console.WriteLine(x.ToString());
Console.ReadLine();
}
public enum MyEnum
{
First = 1,
Second = 2
}
Run Code Online (Sandbox Code Playgroud)
本质上问题是在我绑定的类的构造函数中没有为枚举属性设置默认值,因此它默认为零.
有没有我可以告诉C#编译器我希望它只接受有效值(默认为最低值)?我不希望我的属性接受无效值,并且我不想为每个使用枚举的属性编写setter代码.
Jon*_*eet 11
不,不幸的是没有.
C#枚举只是命名数字,真的 - 根本就没有验证.我同意看到这个以及带有行为的枚举(如Java)会很高兴.我没有听到任何暗示即将到来的事情:{
请注意,类型的默认值将始终是"所有零位"所表示的值 - 实际上,无法在类型系统中找到它.因此,您需要将其设置为合理的默认值,或者即使在验证系统中也必须对其进行显式测试(例如,对于引用类型对null进行测试).
为了清楚起见,我相信有时候让"数字名称"类型有意义......但我认为真正受限制的价值观会更有用.