我很惊讶,但可以使用C#中的构造函数创建枚举.
例如,我有枚举:
例如,我有枚举:
public enum Color { White = 1,Red = 2 }
然后它可以像这样创建:
var color = new Color();
并且该值将为0,这实际上是无效的枚举值.
那么,我们能以某种方式禁止枚举构造函数吗?任何其他想法如何避免这种情况?
谢谢.
解决方法
So,can we prohibit enum constructors somehow?
不.问题与构造函数本身并不严格相关:(颜色)0也是有效的,因为基础类型的值可以为0.
Any other ideas how to avoid this?
不,这基本上是一个更广泛的问题.防止这种情况的唯一方法是检查输入值的有效性.
根据Code Analysis,您应始终具有0枚举值.