是否有任何方式在C#中以确保枚举常量映射到唯一的整数值。c#枚举常量映射到唯一的整数值
public enum Color
{
None =0,
red = 1,
blue= 2,
white = 3
}
在这里,如果我确实更改数值从“白色从3到2”我应该得到编译错误。
在我的项目中,我将数据库中的enum整数值保存为常量。 我需要一个枚举约束,如果有人在枚举中添加一个新的常量(例如黑色)。用户必须提供带有枚举常量的唯一数值。
感谢
是否有任何方式在C#中以确保枚举常量映射到唯一的整数值。c#枚举常量映射到唯一的整数值
public enum Color
{
None =0,
red = 1,
blue= 2,
white = 3
}
在这里,如果我确实更改数值从“白色从3到2”我应该得到编译错误。
在我的项目中,我将数据库中的enum整数值保存为常量。 我需要一个枚举约束,如果有人在枚举中添加一个新的常量(例如黑色)。用户必须提供带有枚举常量的唯一数值。
感谢
的最好的事情是不明确设置在enum
定义的值。对enum
定义发表评论,告诉任何人添加它以确保它们只添加到最后。
例如:
public enum Color
{
None,
red,
blue,
white,
// **NEW ENTRIES MUST ONLY BE ADDED AT THE END OF THE ENUM**
}
另外也可以使用内置Color
结构及其ToArgb()
方法。或者确实是枚举。
我会明确设置值_and_也添加您的评论。以防万一... ;-) –
@UweKeim:以防万一?编译器停止正常工作? :) – Nick
如果有人仍然插入之间,至少我的数据库值仍然有效。设想一个包含多个屏幕高度条目的枚举;人们可能看不到底部的提示。为了避免在顶部插入提示,我会(并且确实)更喜欢直接写整数值。 –
你可以忽略显式值规范并让编译器确定它们吗? –
另外,您是否使用C#4.0或更高版本?如果是这样,您可以利用[代码合同](http://blogs.msdn.com/b/bclteam/archive/2008/11/11/introduction-to-code-contracts-melitta-andersen.aspx)模拟编译时静态断言。 –