C# 如何声明枚举属性的默认值?

C# 如何声明枚举属性的默认值?,c#,properties,default,C#,Properties,Default,如何设置枚举属性的默认值 e、 g: public enum SearchBoxMode { Instant, Regular }; [DefaultValue(SearchBoxMode.Instant)] public SearchBoxMode Mode { get { return mode; } set { mode = value; } } [DefaultValue((int)SearchBoxMode.Instant)] public SearchBoxMode

如何设置枚举属性的默认值

e、 g:

public enum SearchBoxMode { Instant, Regular };


[DefaultValue(SearchBoxMode.Instant)]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }    

[DefaultValue((int)SearchBoxMode.Instant)]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }    

[DefaultValue(SearchBoxMode.GetType(), "Instant")]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }    

[DefaultValue(SearchBoxMode.GetType(), "SearchBoxMode.Instant")]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }    

无关问题:如何获取枚举的
类型
?e、 g

Type type = DialogResult.GetType();

不起作用。

枚举的默认值是underyling类型的0,即使没有为该枚举定义0。其他任何操作都必须手动完成,例如:

SearchBoxMode mode = SearchBoxMode.Instant; // field initializer
使用
[DefaultValue(…)]
只会影响序列化和
PropertyGrid
——实际上不会将属性设置为该值的默认值。正确的语法与您的第一个示例相同:

SearchBoxMode mode = SearchBoxMode.Instant;
[DefaultValue(SearchBoxMode.Instant)]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }  
另一种方法是构造函数:

[DefaultValue(SearchBoxMode.Instant)]
public SearchBoxMode Mode { get; set; }

public YourType() {
    Mode = SearchBoxMode.Instant;
}

关于第二个问题<代码>类型(DialogResult)

此代码不会编译。属性值必须是常量。它们不能是函数调用、变量或计算值。@Inuyaha我知道代码不能工作/编译-我正在展示我在“研究工作”中(失败)的尝试。(有些人拒绝回答一个问题,除非问题里塞满了垃圾)