请教一下 C#中枚举作为字典 key 时的行为,感觉很怪
資深大佬 : lights 4
using System; using System.Collections.Generic; namespace cSharpSolution { internal class Program { public enum AlphaEnum { A, B, C }; public enum BetaEnum { A, B, C } /// <summary> /// 测试 c# 的 Enum 作为字典的 key 是什么? /// </summary> /// <param name="args"></param> private static void Main(string[] args) { var d = new Dictionary<Enum, int>(); d[AlphaEnum.A] = 111; d[BetaEnum.A] = 222; Console.WriteLine($"d[AlphaEnum.A] : {d[AlphaEnum.A]} "); Console.WriteLine($"d[BetaEnum.A] : {d[BetaEnum.A]} "); foreach (var item in d) { Console.WriteLine($"<{item.Key} : {item.Value} >"); } } } }
源码如上,拷贝到文件里可直接运行
主要疑问在定义了一个 <Enum, int> 的字典,以 Enum 为 key 的时候
原本以为 Enum 会转换成 int,后面的赋值会覆盖前面的赋值
但实际上应该是转换成了 <类型+int> 的一个字符串或者怎样的东西,使得不同的 enum 类型的 “0 值” 可以作为不重复的 key
请教一下有没有相关的介绍说明,感觉这一块是个挺奇怪的默认行为
大佬有話說 (4)