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

本文关键字:枚举 属性 默认值 声明 何声明 | 更新日期: 2023-09-27 18:16:26

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

。:

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;  } }    

不相关的问题:我如何得到枚举的Type ?例如

Type type = DialogResult.GetType();

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

枚举的默认值是底层类型的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;
}

是第二个问题;typeof(DialogResult)