猿问

非唯一枚举值

我试图掩盖edi文件上的索引位置...根据情况,我可能会在索引上放置2或3个东西。使用一个枚举隐藏“幻数”会很酷,并且惊讶地看到您可以将多个枚举分配给相同的值,如下所示:


public enum Color

{

    Red = 1,

    Blue = 1,

    Green = 1

}

编译器对此很满意。我没想到这行得通。我不需要回退到枚举,因此我不必担心尝试返回,但这听起来很时髦。为什么CLR允许枚举有多个值,我应该为此使用结构吗?(一个结构似乎比枚举更重,这似乎行得通)


守候你守候我
浏览 262回答 3
3回答

HUWWW

那是完全合法的C#。从C#语言规范版本4.0,第14.3节:多个枚举成员可以共享相同的关联值。这个例子enum Color {   Red,   Green,   Blue,   Max = Blue}显示一个枚举,其中两个枚举成员Blue和Max具有相同的关联值。

开心每一天1111

相同的数值但名称不同,别无其他。可能是例如public enum Color{   DefaultColor = 1,   Red = 1,   Blue = 2}在某些情况下可能有意义,但在很多情况下却没有意义。当您将这些值解析回并调用colorValue.ToString()时,您将获得最后一个作为字符串化值的值(在本例中为Red),但是您将失去默认颜色的概念,因为这是同一回事。至少以您建模数据的方式。如果要将其分开,则对不同的内容使用不同的值。
随时随地看视频慕课网APP
我要回答