定义默认值时,
之间有什么区别[DefaultValue("member")]
public string Role { get; set; }
和
public string Role { get; set; } = "member";
答案 0 :(得分:2)
第一个是可用于元编程的属性。例如,如果有人清除输入,您可能想要记住默认值。它与C#语言本身没有没有。它不会修改Role
的值。
第二个实际上将属性的值设置为'成员'在记忆中。
答案 1 :(得分:2)
DefaultValueAttribute不会导致使用属性的值自动初始化成员。您必须在代码中设置初始值。
换句话说,您的第一个示例可帮助工具(如Windows窗体设计器)了解属性的预期默认值。但它在运行时没有。
如果您希望在运行时为属性分配默认值,则必须自己执行此操作,如您显示的第二个示例所示。