不要将枚举值命名为“Reserved”

更新:2007 年 11 月

TypeName

DoNotNameEnumValuesReserved

CheckId

CA1700

类别

Microsoft.Naming

是否重大更改

原因

枚举成员的名称包含单词“reserved”。

规则说明

该规则假定当前不使用名称中包含“reserved”的枚举成员,而是将其作为一个占位符,以在将来的版本中重命名或移除它。重命名或移除成员是一项重大更改。您不应指望用户只因为成员名称包含“reserved”就会忽略该成员,也不能依赖用户阅读或遵守文档。而且,因为保留成员既出现在对象浏览器中也出现在智能集成开发环境中,它们可能对实际使用了哪个成员造成混淆。

在将来的版本中将不使用保留成员,而是向枚举添加新成员。在大多数情况下,只要添加新成员不会引起原始成员的值更改,添加新成员就不是重大更改。

在几种情况下,即使原始成员保留其原始值,添加成员也属于重大更改。主要原因是,新成员在从现有代码路径返回时,必须中断对包含整个成员列表并在默认情况下引发异常的返回值使用 switch(在 Visual Basic 中为 Select)语句的调用方。其次,客户端代码可能不处理反射方法的行为的更改,如 Enum.IsDefined。因此,如果新成员需要从现有方法返回,或者由于糟糕的反射用法而与应用程序不兼容,则唯一非重大更改的解决方法是:添加包含原始成员和新成员的新枚举,并用 System.ObsoleteAttribute 属性标记原始枚举。对任何外部可见并公开原始枚举的类型或成员均执行相同的过程。

如何修复冲突

要修复与该规则的冲突,请移除或重命名成员。

何时禁止显示警告

如果成员当前正在使用,或者是以前发布的库的成员,则可以安全地禁止显示此规则发出的警告。

相关规则

不要使用 FlagsAttribute 标记枚举

不要将类型名用作枚举值的前缀

枚举存储应为 Int32

枚举应具有零值

用 FlagsAttribute 标记枚举