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

发布于 2024-12-19 04:48:57 字数 730 浏览 0 评论 0原文

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

例如:

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 = DialogResult.GetType();

不起作用。

How do i set the default value of an enumerated property?

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

Unrelated question: How do i get the Type of an enumeration? e.g.

Type type = DialogResult.GetType();

does not work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不及他 2024-12-26 04:48:58

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

The default value of an enum is 0 of the underyling type, even if 0 isn't defined for that enum. Anything else must be done manually, for example:

SearchBoxMode mode = SearchBoxMode.Instant; // field initializer

Using [DefaultValue(...)] only impacts things like serialization and PropertyGrid - it doesn't actually make the property default to that value. The correct syntax is as per your first example:

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

Another approach is a constructor:

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

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

re the second question; typeof(DialogResult)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文