【发布时间】:2010-10-06 12:10:46
【问题描述】:
在 C# 中,是否可以使用属性装饰 Enum 类型或执行其他操作来指定默认值应该是什么,而无需更改值?无论出于何种原因,所需的数字都可能是一成不变的,并且仍然可以控制默认值。
enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
Orientation o; // Is 'North' by default.
【问题讨论】:
-
是否可以更改 int?、double? 等的默认值?
-
@A.R.没有冒犯你,但是将枚举与
ints 抽象地进行比较是没有意义的,因为它们恰好被实现为数字类型。我们可以将枚举实现为字符串,这不会改变它们的用处。我认为这里的答案是 C# 语言表达能力的限制;这种限制当然不是“从受限制的集合中区分值”的想法所固有的。 -
@jpaugh 我不是在“抽象地”将枚举与整数进行比较。我给出了其他数据(包括字符串和其他引用)类型的示例,其中更改默认值没有意义。这不是限制,而是设计功能。一致性是你的朋友:)
-
是的,我熟悉受歧视的工会。 C# 枚举不是那样的,所以我不知道在如此高(且不正确)的水平上考虑它们是否有帮助。虽然“总和类型”当然有其优势,但枚举也是如此(假设提供了适当的值)。例如myColor = 颜色.红色 |颜色。蓝色。我的主要观点是,如果您想要 c# 的 sum 类型,请创建一个,而不是尝试重新利用 enum 的概念。