Hei*_*nzi 4 c# enums coding-style
假设我需要在标志和非标志变体中都使用枚举.
选项1:我可以复制一切:
enum Color { Red, Blue, Green }
[Flags]
enum Colors {
None = 0,
Red = 1,
Blue = 2,
Green = 4
}
// use cases
Color currentColor;
Colors supportedColors;
Run Code Online (Sandbox Code Playgroud)选项2:我可以将Flags变体用于所有内容:
Colors currentColor; // ugly, since neither "None" nor "Red | Blue" should be valid
Run Code Online (Sandbox Code Playgroud)我不喜欢其中任何一个:在选项1中Color.Red,并且Colors.Red完全不相关,这可能需要绑定代码.另外,我必须保持两个枚举同步.选项2的缺点是显而易见的.我真正喜欢的是类似的东西
enum Colors = Flag set of Color;
Run Code Online (Sandbox Code Playgroud)
这个要求有更优雅的解决方案吗?
我只是简单地将[Flags]版本用于所有内容,并且只需在几个地方确保它只是一个值.你需要这样做,因为即使没有[Flags]以下是有效的:
var flags = (Color)47; // why not
Run Code Online (Sandbox Code Playgroud)
所以,你需要检查的Color是你期待呢.这[Flags]只会帮助序列化/解析.
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |