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