C#枚举,双重先前枚举值
C#枚举,双重先前枚举值
这个问题在其他地方已经有了答案:
我遇到了一些看起来很奇怪的事情,但与此同时,我也意识到了一些出于我不知道的原因很有意义。
我有这个枚举:
[Flags] public enum Flags { RemoveQuoteMarks = 1, t1 = 2, t2 = 4, t3 = 8, t4 = 16, t5 = 32, t6 = 64, t7 = 128 }
以前,我没有手动设置枚举值,它们从0开始索引,并且标准地每次增加1,对吧?
我注意到当我尝试使用以下字符串加载并解析它时,会出现奇怪的行为:
string value = "t1, t3, t4, t7";
并使用以下代码进行解析:
Flags flags = (Flags)Enum.Parse(typeof(Flags), value);
结果只是\'t7\',所以我进行了一些研究,并注意到许多其他人使用手动索引,其中每个枚举值都是前一个值的两倍(例如,\'t3 = 8\',\'t4 = 16\'),因此我将此规则应用到我的代码中,它奏效了,我的解析枚举现在显示如下:
t1, t3, t4, t7
正如我所期望的,为什么我必须手动配置我的枚举值呢?
admin 更改状态以发布 2023年5月22日