咨询区

  • Draco

我了解enum有一段时间了,不过我发现它和 常量 特别像,我现在特别想知道什么时候该用 enum 而不是 const,反之亦然,以及使用 enum 的一些优点。

回答区

  • Andrew Barrett

如果你想定义一组值,可优先选择 enum,颜色值就是一个很好的例子。


public enum Colour
{White,Red,Blue
}

或者你想定义一些复合值,比如下面这样。


[FlagsAttribute]
enum DistributedChannel
{None = 0,Transacted = 1,Queued = 2,Encrypted = 4,Persisted = 16,FaultTolerant = Transacted | Queued | Persisted
}

常量一般都是一个值,比如说 PI

  • Robert MacLean

  1. 常量 是一个定义好之后不可再修改的语言特性,而 枚举 只是一个特定类型。

  2. const 可以定义成任何类型,但 enum 类型就是一个 enum。

  3. enum 常出现在有一组可选项,并且想提高代码阅读性的地方,比如:trace级别的:0,1,2 或 error,warning,info。

  4. enum 还可以用于位运算,比如:FontStyle.Bold | FontStyle.Italic 。

点评区

两位大佬已经总结的比较全面了,我在实践中将那些单一的不变值定义为const,比如一些redis的key:RedisKey.RpcList or Redis.ChannelList , enum 一般还是在一些组合值中使用,用于提高代码可读性。

NET问答: 枚举 和 常量 在使用时该怎么抉择?相关推荐

  1. 枚举 注解 常量的使用区别

    虽然我今天要打脸,介绍如何使用注解,慎用枚举,但其实在之前的文章最后,我很明显的提议大家分场景的使用: 最后,声明一点,我所说的使用枚举替换常量,是针对类似于 "常量之间存在关联" ...

  2. jadx-gui 1.4.5使用时遇到的问题

    jadx-gui 1.4.5使用时遇到的问题 解决方案可直接跳到"二.设置首选项" 文章目录 jadx-gui 1.4.5使用时遇到的问题 前言 一.问题现象 1.根源所在 2.表 ...

  3. 前端 重构时需要注意的事项_驾驶式扫地车的功能特点和使用时需要注意事项...

    扫地车 随着经济的发展,人们的生活水平不断提高,对生活环境的要求也越来越高,于是许多工厂.物业.超市.社区.市政单位等开始购买扫地车来进行路面清洁.一是清洗效果好,二是效率高,可以节省人工成本.扫地车 ...

  4. 有没搞错?Java 对象不使用时要赋值为 null?

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 许多Java开发者都曾听说过"不使用的对象应手动赋 ...

  5. 主成分分析(Principle Component Analysis)PCA的核心思想是什么?PCA算法的优缺点?增量PCA模型, 随机PCA, 模型、 核化PCA分别是什么?使用时如何选择?

    主成分分析(Principle Component Analysis)PCA的核心思想是什么?增量PCA模型, 随机PCA, 模型. 核化PCA分别是什么?使用时如何选择? 主成分分析(Princip ...

  6. 场效应管的判别、检测及使用时的注意事项!

    一.用指针式万用表对场效应管进行判别 1)用测电阻法判别结型场效应管的电极 根据场效应管的PN结正.反向电阻值不一样的现象,可以判别出结型场效应管的三个电极.具体方法:将万用表拨在R×1k档上,任选两 ...

  7. Mybatis使用时因jdbcType类型大小写书写不规范导致的异常

    Mybatis使用时因jdbcType类型大小写书写不规范导致的异常 参考文章: (1)Mybatis使用时因jdbcType类型大小写书写不规范导致的异常 (2)https://www.cnblog ...

  8. 有没有搞错?Java 对象不使用时,要赋值为 null?

    来源 | olarxiong.com/category/java/ 前言 最近,听粉丝讨论说,"不使用的对象应手动赋值为null" 这句话,而且好多开发者一直信奉着这句话:问其原因 ...

  9. Java中当对象不再使用时,不赋值为null会导致什么后果 ?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | zhantong 来源 | https://w ...

最新文章

  1. python使用scipy包读取高光谱图像
  2. Handler为什么可能会造成内存泄漏以及可用的四种解决方法
  3. 系统详细设计说明书_人工砂石骨料加工系统5个生产环节详细解读,设计要点、生产工艺...
  4. 2018ICPC-ACM XIAN Invitation Onsite
  5. IT项目管理总结:第十一章 项目风险管理
  6. transfer = C only read dynamically - why it fails to work
  7. java静态类和非静态类的区别_Java中静态内部类和非静态内部类到底有什么区别?...
  8. 【python】内存相关
  9. 在App中获得MainFrame指针
  10. 用Promise实现队列(爬一爬慕课网HTML代码)
  11. C语言程序设计基础(01)—— 计算机与程序设计基础
  12. 消消乐 游戏算法html,Vue实现开心消消乐游戏算法
  13. Aspnet Mvc 前后端分离项目手记(二)关于token认证
  14. Swagger2集成JWT登陆步骤,结合Spring拦截器自定义需要登陆的URL
  15. EIP-1559究竟在吵什么
  16. 2022.1.9 力扣-周赛-统计追加字母可以获得的单词数
  17. 渐近线(泪滴)能改善信号质量吗?
  18. 1. Win 10 :在此处打开命令窗口
  19. 三跨考研浙江大学计算机,浙江大学交互设计考研经历分享(原来跨考这么受欢迎)...
  20. n枚硬币中找到问题硬币

热门文章

  1. 开篇 — 【面向对象设计模式学习】
  2. MVC学习之分页 【转】
  3. Windows 10 版本信息
  4. Oracle树形结构查询之prior的理解
  5. oracle 主键删除,联合主键的创建
  6. 转:VC6.0与VC.net的具体区别
  7. Unity3D学习笔记之八为场景添加细节(一)
  8. 保存网络文章以供以后使用Instapaper阅读
  9. 浏览器显示无法解析服务器的DNS地址,使用搜狗浏览器时突然弹出无法解析服务器的DNS地址该如何处理...
  10. Python深入类和对象