为什么C#允许无效的枚举值

前端之家收集整理的这篇文章主要介绍了为什么C#允许无效的枚举值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我花了一段时间试图理解为什么我的 WPF应用程序不是数据绑定到一个枚举属性,这是原因.
static void Main(string[] args)
 {
  MyEnum x = 0;
  Console.WriteLine(x.ToString());
  Console.ReadLine();
 }

 public enum MyEnum
 {
  First = 1,Second = 2
 }

本质上问题是在I类绑定到的构造函数中没有为枚举属性设置默认值,因此它默认为零.

有没有什么可以告诉C#编译器,我希望它只接受有效的值(默认为最低值)?我不希望我的属性接受无效值,我不想为使用枚举的每个属性编写setter代码.

解决方法

不,不幸的是没有.

C#枚举只是命名的数字,真的 – 根本没有验证.我同意看到这一点,以及行为枚举(如在Java中)是非常好的.我没有听到任何建议即将到来的任何时间

请注意,类型的默认值将始终是由“全零位”表示的值 – 真的没有办法在类型系统内完成.因此,您需要确定一个明智的默认值,否则即使在一个有效的系统中也需要对其进行明确的测试(比如针对引用类型的null进行测试).

为了清楚起见,我相信有时候会有“数字的名字”的类型,但我认为一个真正受限制的价值观将更有用.

猜你在找的C#相关文章