为什么枚举会有这样的行为?
本文关键字:枚举 为什么 | 更新日期: 2023-09-27 18:09:22
今天在处理枚举时,我在c#编译器中遇到了一些稍微奇怪的行为。
enum FunWithEnum
{
One = 1,
Two,
Three,
Four = 1,
Five = 2,
Six
}
结果:- FunWithEnum。一=一
- FunWithEnum。二=二
- FunWithEnum。三=三
- FunWithEnum。四=一
- FunWithEnum。五=二
- FunWithEnum。六=三
谁能给我解释一下为什么这些值是它们编译后的值?
我最初的猜测与使用枚举时能够有别名有关。但我不知道这是否有意义。
根据文档
the value of each successive enumerator is increased by 1.
基于此
One = 1,
Two, // = 2
Three, // = 3
Four = 1,
Five = 2,
Six //== 3
还有另一个问题的答案
当多个枚举具有相同的值
我在提供的代码中看到的值是从来不是由编译器分配的,它是由编码器编写的。所以
- 或者它是一个导致混乱的错误(具有相同关联数字的不同枚举成员没有多大意义)
- 或者它是处理一些旧/遗留系统的代码,其中开发人员必须引入一些新值(用于开发商品或其他1000个原因),但与系统本身保持向后兼容。所以这是一种变通方法,可以扩展一些非常旧的代码的功能,这些代码不能被触摸。