我有一台enum
public enum Enumeration
{
A,
B,
C
}和一个接受Enumeration类型的参数的方法
public void method(Enumeration e)
{
}我希望method只能接受A和B (C被认为是一个错误的值),但是我需要在我的Enumeration中使用C,因为其他方法可以接受它作为正确的值。做这件事最好的方法是什么?
发布于 2012-06-24 03:04:17
我不会只拒绝C。我将拒绝除A和B之外的任何值
if (e != Enumeration.A && e != Enumeration.B)
{
throw new ArgumentOutOfRangeException("e");
}这一点很重要,否则人们可能会调用:
Method((Enumeration) -1);它会通过你的验证。您始终需要注意,枚举实际上只是一组命名的整数-但任何具有正确基础类型的整数都可以转换为枚举类型。
发布于 2012-06-24 03:01:23
抛出异常:
public void method(Enumeration e)
{
if (e != Enumeration.A && e != Enumeration.B) {
throw new ArgumentOutOfRangeException("e");
}
// ...
}如果你使用的是.NET 4.0或更高版本,那么你可以使用code contracts。
发布于 2012-06-24 03:07:04
正如paulsm4提到的,您可以定义:
public enum EnumSubset
{
A = Enumeration.A,
B = Enumeration.B,
}并使用:
public void method(EnumSubset e)
{
}https://stackoverflow.com/questions/11172145
复制相似问题