CLR via C# 笔记 -- 枚举(15)
1. 枚举继承System.Enum,后者继承 System.ValueType,所以枚举是值类型。
2. 枚举不能定义任何方法、属性和事件,不过可以定义扩展方法
3. ToString()方法
Color c = Color.Blue; Console.WriteLine(c); // "Blue" Console.WriteLine(c.ToString()); // "Blue" Console.WriteLine(c.ToString("G")); // "Blue" Console.WriteLine(c.ToString("D")); // "3" Console.WriteLine(c.ToString("X")); // 03
4. 获取所有的值
Color[] colors = (Color[])Enum.GetValues(typeof(Color));
5. IsDefined()方法很方便,但必须谨慎使用。1)总是执行区分大小写的查找;2)内部使用了反射,速度不快。
6. 标志位 [Flags]
internal enum Actions { None = 0, Read = 0x0001, Write = 0x0002, ReadWrite = Actions.Read | Actions.Write, Delete = 0x0004, Query = 0x0008, Sync = 0x0010, All = Actions.None | Actions.Read | Actions.Write | Actions.ReadWrite | Actions.Delete | Actions.Query | Actions.Sync } Actions actions = Actions.Read | Actions.Delete; Console.WriteLine(actions.ToString("F")); // Read, Delete
7. Parse() 和 TryParse() 会自动删除头尾空白字符;字符串会被分解为一组以逗号分隔符的token,但IsDefined() 不会有这样的操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构