Enum的基本类型值相同转换问题
来源:互联网 发布:2012大学生就业率数据 编辑:程序博客网 时间:2024/06/03 19:41
1.Enum与int之间的转换
Enum规定:Enum的枚举成员不可以相同,但是枚举值可以相同
eg:
enum Color:sbyte{ red=1, blue = 1, yellow=1, black = 1}int a = 1;Color c = (Color)a;//这个c会是其中的哪一个了?Console.WriteLine("答案是:"+c);
你如果实验了这个代码,你会发现,他的值是 “black ”,这是为什么了?
因为当枚举成员的枚举值相同时,在进行枚举值===》枚举成员的转换时,C#代码会判断具有相同枚举值(1)得枚举成员(red,blue,yellow,black)中的变量名的字符优先级,事例中的 枚举成员:
1)首先是 ‘b’具有最高优先级,所有会从blue 和 black中选择;
2)blue 和 black 中的第二个字符,明显相同,那么比较 第三个字符,明显 a>u,那么就很容易得出,Color c = (Color)a 会让c等于“black”啦!
附上字母与数字的优先级:0>9 > A>Z > a>z
2.Enum与字符串之间的转换
//枚举到字符串 string colorName = Ecolor.red.ToString(); Console.WriteLine("string colorName = Ecolor.bAack.ToString()======>" + colorName); //字符串到枚举 Ecolor colorOne = (Ecolor)Enum.Parse(typeof(Ecolor), colorName); Console.WriteLine(colorOne);//输出为black //Ecolor colorTwo = (Ecolor)Enum.Parse(typeof(Ecolor), "紫色");报错因为枚举中没有此枚举成员 //Console.WriteLine(colorTwo); Ecolor colorThree = (Ecolor)Enum.Parse(typeof(Ecolor), "2"); Console.WriteLine(colorThree);//输出为black
(1)还是上面说到的字符顺序问题,其中也翻译了一个问题:
字符串到枚举的过程
Ecolor colorOne = (Ecolor)Enum.Parse(typeof(Ecolor), colorName);
首先是将 colorName转换为枚举成员的枚举值
其次在按照字符优先级,进行转换枚举成员
(2)Ecolor colorThree = (Ecolor)Enum.Parse(typeof(Ecolor), “2”);
字符优先级问题
综上所述了,我目前(2017/10/19 0:50)还是不知道枚举值可以相同有啥作用.
阅读全文
0 0
- Enum的基本类型值相同转换问题
- java枚举类型enum值与整数的转换
- 基本类型的赋值、转换问题
- Enum(枚举类型)的基本应用
- java enum与int类型的转换
- 基本类型的转换
- 基本类型的转换
- 基本类型的类型转换
- 基本类型的类型转换
- C# enum类型的版本问题
- 基本问题之类型转换,浮点数的表示
- 基本问题之类型转换后的指针寻址
- Qt中QString与基本类型的转换问题
- JAVA的基本类型及自动转换问题
- JAVA的基本类型及自动转换问题
- c++和Java中的方法(函数)重载与传入方法的基本类型转换——相同部分
- enum枚举与int string类型之间的相互转换
- 类型转换的问题
- 第六周第一节课
- Python标准库(非常经典的各种模块介绍)
- TLS/SSL协议工作原理
- Assign Cookies(算法分析week7)
- Kotlin 二分法算法游戏--猜价格
- Enum的基本类型值相同转换问题
- 第二章 SQL命令参考-COPY
- 第六周第二节课
- Mac 下搭建Python开发环境
- 计算机网络 学习摘要(2)
- 关于删除链表结点的小结(Java)
- 面经:)
- 游戏服务器端开发要点
- pl/sql编程