当前位置:  开发笔记 > 编程语言 > 正文

枚举和常量.哪个用的?

如何解决《枚举和常量.哪个用的?》经验,为你挑选了4个好方法。

我正在对枚举进行一些阅读,发现它们与声明常量非常相似.我怎么知道何时使用常量而不是枚举,反之亦然.使用枚举有哪些优点?



1> Andrew Barre..:

如果要定义某些值可以使用的值,请使用枚举.颜色是一个明显的例子,如:

public enum Colour
{
    White,
    Red,
    Blue
}

或者也许是一系列可能的事情:(例如我从这里偷走,因为我很懒)

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

常量应该是单个值,如PI.没有一系列PI值,只有PI.



2> Johannes..:

其他答案缺少的是枚举有一个整数基类型.您可以将默认值从int更改为除char之外的任何其他整数类型:

enum LongEnum : long {
    foo,
    bar,
}

您可以显式地和隐式地转换为基类型,这在switch语句中很有用.请注意,即使枚举没有具有适当值的成员,也可以将基类型的任何值强制转换为枚举.因此,始终使用开关中的默认部分是个好主意.BTW,.NET本身甚至允许浮点值枚举,但你不能用C#定义它们,虽然我认为你仍然可以使用它们(交换机除外).

此外,使用枚举可以提供更多的类型安全性.如果您打算使用例如int常量作为方法参数,那么我可以使用任何int值调用该方法.当然,通过铸造也可以使用枚举,但不会偶然发生.更糟糕的是混淆参数顺序的可能性.

void method(int a, int b) {...}

如果常量A只能进入a而常量B只能进入b,那么使用两种不同的枚举类型将在编译期间发现任何误用.



3> Robert MacLe..:

常量是一种语言特性,它表示变量不会改变值(因此编译器可以围绕该知识进行优化),其中枚举是特定类型.

常量可以是任何数据类型,但枚举是枚举.

我在任何可以提供多种选项的地方使用枚举,并希望提高代码的可读性.即,您可以将跟踪级别设置为值为0,1,2的int或作为错误,警告和信息的枚举.

Enum还可以用作按位运算符,即FontStyle.Bold | FontStyle.Italic会为您提供粗体和斜体字体.



4> Serge Wautie..:

除了罗伯特的回答:

    将枚举用于一组有限的命名值.您并不真正关心每个符号背后的数值(但您仍然有能力强加它们,例如,为了与遗留系统兼容).

    罗伯特:是的,Enum可以用作位字段.使用Flags属性(并确保枚举的成员具有合适的数值).

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有