NET问答: 枚举 和 常量 在使用时该怎么抉择?
咨询区
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:
常量
是一个定义好之后不可再修改的语言特性,而枚举
只是一个特定类型。const 可以定义成任何类型,但 enum 类型就是一个 enum。
enum 常出现在有一组可选项,并且想提高代码阅读性的地方,比如:trace级别的:0,1,2 或 error,warning,info。
enum 还可以用于位运算,比如:FontStyle.Bold | FontStyle.Italic 。
点评区
两位大佬已经总结的比较全面了,我在实践中将那些单一的不变值定义为const,比如一些redis的key:RedisKey.RpcList or Redis.ChannelList
, enum 一般还是在一些组合值中使用,用于提高代码可读性。
NET问答: 枚举 和 常量 在使用时该怎么抉择?相关推荐
- 枚举 注解 常量的使用区别
虽然我今天要打脸,介绍如何使用注解,慎用枚举,但其实在之前的文章最后,我很明显的提议大家分场景的使用: 最后,声明一点,我所说的使用枚举替换常量,是针对类似于 "常量之间存在关联" ...
- jadx-gui 1.4.5使用时遇到的问题
jadx-gui 1.4.5使用时遇到的问题 解决方案可直接跳到"二.设置首选项" 文章目录 jadx-gui 1.4.5使用时遇到的问题 前言 一.问题现象 1.根源所在 2.表 ...
- 前端 重构时需要注意的事项_驾驶式扫地车的功能特点和使用时需要注意事项...
扫地车 随着经济的发展,人们的生活水平不断提高,对生活环境的要求也越来越高,于是许多工厂.物业.超市.社区.市政单位等开始购买扫地车来进行路面清洁.一是清洗效果好,二是效率高,可以节省人工成本.扫地车 ...
- 有没搞错?Java 对象不使用时要赋值为 null?
点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 许多Java开发者都曾听说过"不使用的对象应手动赋 ...
- 主成分分析(Principle Component Analysis)PCA的核心思想是什么?PCA算法的优缺点?增量PCA模型, 随机PCA, 模型、 核化PCA分别是什么?使用时如何选择?
主成分分析(Principle Component Analysis)PCA的核心思想是什么?增量PCA模型, 随机PCA, 模型. 核化PCA分别是什么?使用时如何选择? 主成分分析(Princip ...
- 场效应管的判别、检测及使用时的注意事项!
一.用指针式万用表对场效应管进行判别 1)用测电阻法判别结型场效应管的电极 根据场效应管的PN结正.反向电阻值不一样的现象,可以判别出结型场效应管的三个电极.具体方法:将万用表拨在R×1k档上,任选两 ...
- Mybatis使用时因jdbcType类型大小写书写不规范导致的异常
Mybatis使用时因jdbcType类型大小写书写不规范导致的异常 参考文章: (1)Mybatis使用时因jdbcType类型大小写书写不规范导致的异常 (2)https://www.cnblog ...
- 有没有搞错?Java 对象不使用时,要赋值为 null?
来源 | olarxiong.com/category/java/ 前言 最近,听粉丝讨论说,"不使用的对象应手动赋值为null" 这句话,而且好多开发者一直信奉着这句话:问其原因 ...
- Java中当对象不再使用时,不赋值为null会导致什么后果 ?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | zhantong 来源 | https://w ...
最新文章
- python使用scipy包读取高光谱图像
- Handler为什么可能会造成内存泄漏以及可用的四种解决方法
- 系统详细设计说明书_人工砂石骨料加工系统5个生产环节详细解读,设计要点、生产工艺...
- 2018ICPC-ACM XIAN Invitation Onsite
- IT项目管理总结:第十一章 项目风险管理
- transfer = C only read dynamically - why it fails to work
- java静态类和非静态类的区别_Java中静态内部类和非静态内部类到底有什么区别?...
- 【python】内存相关
- 在App中获得MainFrame指针
- 用Promise实现队列(爬一爬慕课网HTML代码)
- C语言程序设计基础(01)—— 计算机与程序设计基础
- 消消乐 游戏算法html,Vue实现开心消消乐游戏算法
- Aspnet Mvc 前后端分离项目手记(二)关于token认证
- Swagger2集成JWT登陆步骤,结合Spring拦截器自定义需要登陆的URL
- EIP-1559究竟在吵什么
- 2022.1.9 力扣-周赛-统计追加字母可以获得的单词数
- 渐近线(泪滴)能改善信号质量吗?
- 1. Win 10 :在此处打开命令窗口
- 三跨考研浙江大学计算机,浙江大学交互设计考研经历分享(原来跨考这么受欢迎)...
- n枚硬币中找到问题硬币