1C#中的枚举
C#中的枚举
枚举就是一个变量类型 ,就像int--double string decimal.
只是枚举声明、赋值、使用的方式跟那些普通的变量类型不一样。
枚举声明位置应该和类差不多,不能放在方法里。
语法:
[public] enum 枚举名
{
值1,
值2,
值3,
........
}
我们可以将一个枚举类型的变量跟int类型和string类型互相转换。
- 1枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换int和枚举
如下,声明一个qq状态的枚举:
public enum QQState
{
OnLine,
OffLine,
Leave,
Busy,
QMe
}
转换为int类型
QQState qq = QQState.OnLine;
int a1 = (int)qq;
Console.WriteLine(a1);
Console.WriteLine((int)QQState.OffLine);
Console.WriteLine((int)QQState.Leave);
Console.WriteLine((int)QQState.Busy);
Console.WriteLine((int)QQState.QMe);
输出可以看到转为为int后,结果就是枚举的下标,如图:
可以在创建枚举时候给他初始化下标,如果不初始化下标默认下标从0开始:
public enum QQState
{
OnLine=1,
OffLine,
Leave=5,
Busy,
QMe
}
这样和上面一样强制转为int输出时发现会按照初始化的下标进行输出
将int转为枚举(还是用上没有设置初始下标的枚举当例子)
int n1 = 2;
QQState qq = (QQState)n1;
Console.WriteLine(qq);
输出结果为n1对应枚举里下标为2的枚举,如果n1为枚举里不存在的下标,比如说8,这时候不会报异常,结果输出还是8
- 2所有类型都可以转为string,所以可以ToString()将枚举转换为string,或者强制类型转换将string转为枚举
例如
string n1 = QQState.Busy.ToString();
Console.WriteLine(n1);//输出结果为Busy
将string转为枚举
将字符串转为枚举只能用Enum.Parse()或者Enum.TryParse();因为Convert是点不出来Enum的,因为可能一个类里有多个枚举类型。
string n1 = "0";
QQState state= (QQState)Enum.Parse(typeof(QQState),n1);
Console.WriteLine(state);//OnLine
解释下这个强转
在上面枚举中,如果要转换的字符串是枚举里没有的下标,那结果还是这个下标,如果是枚举里的值,结果还是这个值,如果是枚举里没有的,那就会报异常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构