在c#中,是否有可能用属性装饰Enum类型或做一些其他事情来指定默认值应该是什么,而不改变值?由于某种原因,所需的数字可能是固定不变的,而且仍然可以控制默认值是很方便的。
enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
Orientation o; // Is 'North' by default.
在c#中,是否有可能用属性装饰Enum类型或做一些其他事情来指定默认值应该是什么,而不改变值?由于某种原因,所需的数字可能是固定不变的,而且仍然可以控制默认值是很方便的。
enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
Orientation o; // Is 'North' by default.
当前回答
enum(实际上,任何值类型)的默认值是0——即使这不是该enum的有效值。这是无法改变的。
其他回答
[DefaultValue(None)]
public enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
然后在代码中可以使用
public Orientation GetDefaultOrientation()
{
return default(Orientation);
}
枚举类型的默认值为0:
默认情况下,第一个枚举数的值为0,值为 每个连续的枚举数加1。” 值类型enum包含表达式(E)0产生的值,其中E是enum 标识符”。
你可以在这里查看c#枚举的文档和c#默认值表的文档。
enum(实际上,任何值类型)的默认值是0——即使这不是该enum的有效值。这是无法改变的。
枚举的默认值是等于0的枚举值。我不相信这可以通过属性或其他方式改变。
(MSDN说:“enum E的默认值是表达式(E)0产生的值。”)
实际上,枚举的默认值是枚举中第一个值为0的元素。
例如:
public enum Animals
{
Cat,
Dog,
Pony = 0,
}
//its value will actually be Cat not Pony unless you assign a non zero value to Cat.
Animals animal;