我花了一段时间试图理解为什么我的 WPF 应用程序没有正确地数据绑定(bind)到枚举属性,这就是原因。
static void Main(string[] args)
{
MyEnum x = 0;
Console.WriteLine(x.ToString());
Console.ReadLine();
}
public enum MyEnum
{
First = 1,
Second = 2
}
本质上,问题是在我绑定(bind)到的类的构造函数中没有为枚举属性设置默认值,因此它默认为零。
有什么方法可以告诉 C# 编译器我希望它只接受有效值(并且默认为最低值)?我不希望我的属性接受无效值,我不想为每个使用枚举的属性编写 setter 代码。
最佳答案
不,不幸的是不是。
C# 枚举只是命名数字,真的 - 根本没有验证。我同意很高兴看到这一点,以及具有行为的枚举(如在 Java 中)。不过,我还没有听到任何迹象表明它很快就会到来:(
请注意,类型的默认值总是由“全零位”表示的值——在类型系统中没有办法绕过它,真的。因此,要么您需要将其设置为合理的默认值,要么即使在验证系统中也必须针对它进行显式测试(例如针对引用类型进行 null 测试)。
需要明确的是,我相信有时候使用“数字名称”类型是有意义的……但我认为一组真正受限的值会更有用。
关于c# - 为什么 C# 允许无效的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3759518/