如何防止枚举构造函数

Ole*_*nyk 6 c# enums

我很惊讶,但可以使用C#中的构造函数创建枚举.例如,我有枚举:

public enum Color
{
    White = 1,
    Red = 2
}
Run Code Online (Sandbox Code Playgroud)

然后它可以像这样创建:

var color = new Color();
Run Code Online (Sandbox Code Playgroud)

并且该值将为0,这实际上是无效的枚举值.

那么,我们能以某种方式禁止枚举构造函数吗?任何其他想法如何避免这种情况?

谢谢.

Pat*_*man 9

那么,我们能以某种方式禁止枚举构造函数吗?

不.问题与构造函数本身并不严格相关:(Color)0也是有效的,因为底层类型可以具有该值0.

任何其他想法如何避免这种情况?

不,这基本上是一个更广泛的问题.防止这种情况的唯一方法是检查输入值的有效性.

0根据代码分析,您应始终具有枚举值.