我有一个枚举,我想"隐藏"其中一个值(因为我添加它以供将来支持).代码是用C#编写的.
public enum MyEnum
{
ValueA = 0,
ValueB = 1,
Reserved
}
Run Code Online (Sandbox Code Playgroud)
我不想允许使用此代码的人使用此值(MyEnum.Reserved).任何的想法?TIA
Ray*_*Ray 10
你可以使用'过时'属性 - 语义不正确,但它会做你想要的:
public enum MyEnum
{
ValueA = 0,
ValueB = 1,
[Obsolete("Do not use this", true)]
Reserved
}
Run Code Online (Sandbox Code Playgroud)
任何试图使用该Foo.Reserved项目编译的人都会收到错误
如果您不想显示它,请不要包含它:
public enum MyEnum
{
ValueA = 0,
ValueB = 1,
}
Run Code Online (Sandbox Code Playgroud)
请注意,此枚举的用户仍然可以将任何整数值分配给声明为MyEnum的变量:
MyEnum e = (MyEnum)2; // works!
Run Code Online (Sandbox Code Playgroud)
这意味着接受枚举的方法应始终在使用之前验证此输入:
void DoIt(MyEnum e)
{
if (e != MyEnum.ValueA && e != MyEnum.ValueB)
{
throw new ArgumentException();
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
因此,只需在以后需要时添加您的值,然后修改您的方法以接受它.