首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理枚举字段

管理枚举字段
EN

Stack Overflow用户
提问于 2012-06-24 02:57:37
回答 3查看 146关注 0票数 4

我有一台enum

代码语言:javascript
复制
public enum Enumeration
{
    A,
    B,
    C
}

和一个接受Enumeration类型的参数的方法

代码语言:javascript
复制
public void method(Enumeration e)
{
}

我希望method只能接受AB (C被认为是一个错误的值),但是我需要在我的Enumeration中使用C,因为其他方法可以接受它作为正确的值。做这件事最好的方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-24 03:04:17

我不会只拒绝C。我将拒绝除AB之外的任何值

代码语言:javascript
复制
if (e != Enumeration.A && e != Enumeration.B)
{
    throw new ArgumentOutOfRangeException("e");
}

这一点很重要,否则人们可能会调用:

代码语言:javascript
复制
Method((Enumeration) -1);

它会通过你的验证。您始终需要注意,枚举实际上只是一组命名的整数-但任何具有正确基础类型的整数都可以转换为枚举类型。

票数 6
EN

Stack Overflow用户

发布于 2012-06-24 03:01:23

抛出异常:

代码语言:javascript
复制
public void method(Enumeration e)
{
    if (e != Enumeration.A && e != Enumeration.B) {
        throw new ArgumentOutOfRangeException("e");
    }
    // ...
}

如果你使用的是.NET 4.0或更高版本,那么你可以使用code contracts

票数 5
EN

Stack Overflow用户

发布于 2012-06-24 03:07:04

正如paulsm4提到的,您可以定义:

代码语言:javascript
复制
public enum EnumSubset
{
    A = Enumeration.A,
    B = Enumeration.B,
}

并使用:

代码语言:javascript
复制
public void method(EnumSubset e)
{
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11172145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档