在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 Orientations
{
None, North, East, South, West
}
private Orientations? _orientation { get; set; }
public Orientations? Orientation
{
get
{
return _orientation ?? Orientations.None;
}
set
{
_orientation = value;
}
}
如果将属性设置为null,则会返回朝向。没有得到。 属性_orientation默认为空。
其他回答
任何enum的默认值为0。因此,如果您想将一个枚举数设置为默认值,则将该枚举数设置为零,并将所有其他枚举数设置为非零(如果有多个枚举数的值为零,则第一个值为零的枚举数将是该枚举的默认值)。
enum Orientation
{
None = 0, //default value since it has the value '0'
North = 1,
East = 2,
South = 3,
West = 4
}
Orientation o; // initialized to 'None'
如果枚举数不需要显式值,则只需确保第一个枚举数是您希望作为默认枚举数的枚举数,因为“默认情况下,第一个枚举数的值为0,并且每个后续枚举数的值都加1。”(c#引用)
enum Orientation
{
None, //default value since it is the first enumerator
North,
East,
South,
West
}
Orientation o; // initialized to 'None'
枚举的默认值是等于0的枚举值。我不相信这可以通过属性或其他方式改变。
(MSDN说:“enum E的默认值是表达式(E)0产生的值。”)
如果你将默认enum定义为最小值的enum,你可以使用这个:
public enum MyEnum { His = -1, Hers = -2, Mine = -4, Theirs = -3 }
var firstEnum = ((MyEnum[])Enum.GetValues(typeof(MyEnum)))[0];
firstEnum == Mine.
这并没有假设枚举值为零。
枚举类型的默认值为0:
默认情况下,第一个枚举数的值为0,值为 每个连续的枚举数加1。” 值类型enum包含表达式(E)0产生的值,其中E是enum 标识符”。
你可以在这里查看c#枚举的文档和c#默认值表的文档。
[DefaultValue(None)]
public enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
然后在代码中可以使用
public Orientation GetDefaultOrientation()
{
return default(Orientation);
}