我有一个enum:
public enum Enumeration
{
A,
B,
C
}
Run Code Online (Sandbox Code Playgroud)
并且一个方法接受一个类型的参数Enumeration:
public void method(Enumeration e)
{
}
Run Code Online (Sandbox Code Playgroud)
我希望它method只能接受A和B(C被认为是错误的值),但我需要C在我的Enumeration因为其他方法可以接受它作为正确的值.做这个的最好方式是什么?
我不会拒绝公正 C.我会拒绝其他任何值比A和B:
if (e != Enumeration.A && e != Enumeration.B)
{
throw new ArgumentOutOfRangeException("e");
}
Run Code Online (Sandbox Code Playgroud)
这很重要,否则人们可以打电话:
Method((Enumeration) -1);
Run Code Online (Sandbox Code Playgroud)
它会通过验证.您总是需要知道枚举实际上只是一组命名整数 - 但是右侧基础类型的任何整数都可以强制转换为枚举类型.
抛出异常:
public void method(Enumeration e)
{
if (e != Enumeration.A && e != Enumeration.B) {
throw new ArgumentOutOfRangeException("e");
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是.NET 4.0或更高版本,则可以使用代码契约.
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |