C# 枚举
一、简介
枚举是一组命名整型常量;枚举类型是使用 enum 关键字声明的;C# 枚举是值类型。
二、语法
枚举的语法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public enum 枚举名 { 值1, 值2, 值3, ............ } 或者 enum 枚举名 { 值1, 值2, 值3, ............ } |
public:访问修饰符,公共的公开的,哪都可以访问;
enum:关键字,声明枚举的关键字;
枚举名:要符合Pascal命名规范;
将枚举声明到命名空间下面,类的外面,表示这个命名空间下,所以类都可以访问这个枚举;
三、类型转换
我们可以将一个枚举类型的变量跟int类型和string类型互相转换:
1.枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换,当转换一个枚举中没有的值的时候,不会抛异常,而是直接将数字显示出来。
2.如果将枚举类型转换成string类型,则直接调用ToString().
3.如果将字符串转换成枚举类型则需要下面这样一行代码:
1 | (要转换的枚举类型)Enum.Parse( typeof (要转换的枚举类型), "要转换的字符串" ); |
如果转换的字符串是数字,则就算枚举中没有,也会不会抛异常。
如果转换的字符串是文本,如果枚举中没有,则会抛出异常。
备注:所有的类型都能够转换成string类型,调用ToString()。
四、实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _03枚举的练习 { public enum Sesons { 春, 夏, 秋, 冬 } public enum QQState { OnLine, OffLine, Leave, Busy, QMe } class Program { static void Main( string [] args) { Sesons s = Sesons.春; QQState state = QQState.OnLine; } } } |
五、类型转换实例
1.将枚举类型强转成int类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | namespace _04枚举和 int 以及 string 类型之间的转换 { public enum QQState { OnLine=1, OffLine, Leave, Busy, QMe } class Program { static void Main( string [] args) { #region 将枚举类型强转成int类型 QQState state = QQState.OnLine; //枚举类型默认可以跟int类型互相转换 枚举类型跟int类型是兼容的 int n = ( int )state; Console.WriteLine(n); Console.WriteLine(( int )QQState.OffLine); Console.WriteLine(( int )QQState.Leave); Console.WriteLine(( int )QQState.Busy); Console.WriteLine(( int )QQState.QMe); Console.ReadKey(); #endregion } } } |
2.将int类型强转为枚举类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | namespace _04枚举和 int 以及 string 类型之间的转换 { public enum QQState { OnLine=1, OffLine, Leave, Busy, QMe } class Program { static void Main( string [] args) { #region 将int类型强转为枚举类型 int n1 = 3; QQState state = (QQState)n1; Console.WriteLine(state); Console.ReadKey(); #endregion } } } |
3.将枚举类型转换成字符串类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | amespace _04枚举和 int 以及 string 类型之间的转换 { public enum QQState { OnLine=1, OffLine, Leave, Busy, QMe } class Program { static void Main( string [] args) { #region 将枚举类型转换成字符串类型 //所有的类型都能够转换成string类型 int n1 = 10; // double n1 = 3.14; decimal n1 = 5000m; string s1= n1.ToString(); Console.WriteLine(s1); QQState state = QQState.OnLine; string s = state.ToString(); Console.WriteLine(s); Console.ReadKey(); #endregion } } } |
4.将字符串转换成枚举类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | amespace _04枚举和 int 以及 string 类型之间的转换 { public enum QQState { OnLine=1, OffLine, Leave, Busy, QMe } class Program { static void Main( string [] args) { //枚举练习 //提示用户选择一个在线状态,我们接受,并将用户的输入转换成枚举类型。 //再次打印到控制台中 Console.WriteLine( "请选择您的qq在线状态 1--OnLine 2--OffLine 3--Leave 4--Busy 5--QMe" ); string input = Console.ReadLine(); switch (input) { case "1" : QQState s1 = (QQState)Enum.Parse( typeof (QQState), input); Console.WriteLine( "您选择的在线状态是{0}" ,s1); break ; case "2" : QQState s2 = (QQState)Enum.Parse( typeof (QQState), input); Console.WriteLine( "您选择的在线状态是{0}" ,s2); break ; case "3" : QQState s3 = (QQState)Enum.Parse( typeof (QQState), input); Console.WriteLine( "您选择的在线状态是{0}" ,s3); break ; case "4" : QQState s4 = (QQState)Enum.Parse( typeof (QQState), input); Console.WriteLine( "您选择的在线状态是{0}" , s4); break ; case "5" : QQState s5 = (QQState)Enum.Parse( typeof (QQState), input); Console.WriteLine( "您选择的在线状态是{0}" , s5); break ; } Console.ReadKey(); } } } |
我是一个爱笑,认真记录每一天进步的博主.
转载请注明出处,商用请征得作者本人同意,谢谢!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器