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

  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 一般还是在一些组合值中使用,用于提高代码可读性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值