Automatic Property Values and Defaults
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How do you give a C# Auto-Property a default value?
我在这样的班级里有一个财产
1 | public String fontWeight { get; set; } |
我想默认是
有没有一种方法可以用"自动"的方式来完成,而不是用下面的方式
1 2 3 4 | public String fontWeight { get { return fontWeight; } set { if (value!=null) { fontWeight = value; } else { fontWeight ="Normal"; } } } |
是的,你可以。
如果你在找类似的东西:
1 2 3 4 5 6 | [DefaultValue("Normal")] public String FontWeight { get; set; } |
谷歌搜索"使用.net进行面向方面的编程"
…如果这对你来说是多余的,那么就这样做:
1 2 3 4 5 6 7 8 | private string fontWeight; public String FontWeight { get { return fontWeight ??"Normal"; } set {fontWeight = value;} } |
不,自动属性只是一个普通的getter和/或setter以及一个支持变量。如果要在属性中放入任何类型的逻辑,则必须使用常规属性语法。
您可以使用
1 2 3 4 5 6 | private string _fontWeight; public String FontWeight { get { return _fontWeight; } set { _fontWeight = value ??"Normal"; } } |
请注意,setter不用于初始化属性,因此如果不在构造函数中设置值(或在变量声明中指定值),则默认值仍然为空。您可以在getter中进行签入以绕过此问题:
1 2 3 4 5 6 | private string _fontWeight; public String FontWeight { get { return _fontWeight ??"Normal"; } set { _fontWeight = value; } } |
您要么需要使用一个支持字段并将其初始化为默认值
1 2 3 4 5 6 | private String fontWeight ="Normal"; public String FontWeight { get { return fontWeight; } set { fontWeight = value; } } |
或者,保留auto属性并在构造函数中调用setter
1 2 3 4 5 6 | public constructor() { FontWeight ="Normal"; } public String FontWeight { get; set; } |
您需要使用支持字段。
1 2 3 4 5 6 | private string fontWeight; public String FontWeight { get { String.IsNullOrEmpty(fontWeight) ?"Normal" : fontWeight;} set {fontWeight = String.IsNullOrEmpty(value) ?"Normal" : value;} } |
可以使用默认值属性:
1 2 | [DefaultValue("Normal")] public string FontWeight { get; set; } |
尽管它指出
A DefaultValueAttribute will not cause a member to be automatically initialized with the attribute's value. You must set the initial value in your code.
因此,您可以将它与构造函数中的初始化结合使用,或者通过一个支持字段和默认处理来使用。
一种方法是使用postsharp,在这个答案中详细描述了一个类似的问题。
您需要这样一个变量:
1 2 3 4 5 6 7 8 9 10 11 12 13 | string fontWeight; public string FontWeight { get { if (string.IsNullOrEmpty(fontWeight)) fontWeight ="Normal"; return fontWeight; } set { fontWeight = value; } } |
或者使用
1 2 3 4 5 6 7 8 9 | class FontClass { public string FontWeight { get; set; } public FontClass() { FontWeight ="Normal"; } } |