我有一些接口和類實現該接口:C#如何設置自動屬性的默認值?
public interface IWhatever {
bool Value { get; set;}
}
public class Whatever : IWhatever {
public bool Value { get; set; }
}
現在,確實C#
允許Value
有一些默認值,而無需使用一些支持字段?
我有一些接口和類實現該接口:C#如何設置自動屬性的默認值?
public interface IWhatever {
bool Value { get; set;}
}
public class Whatever : IWhatever {
public bool Value { get; set; }
}
現在,確實C#
允許Value
有一些默認值,而無需使用一些支持字段?
更新
作爲C#6(VS2015)此語法是完全有效的
public bool Value { get; set; } = true;
作爲爲只讀屬性
public bool Value { get; } = true;
舊設定的值,前C#6回答
對於那些可激發性質的劇透:下面的代碼將無法正常工作
你是在問:「我能做到這一點?」
public bool Value { get; set; } = true;
不,你不能。您需要在類的構造函數中設置默認值
當我第一次看到代碼示例時,我以爲「沒辦法!你可以做到這一點?!「 – 2011-05-04 15:40:29
這真的很棒,如果這實際上工作:3 – 2011-05-04 16:00:03
我的投票,這非常有成效的功能! – 2012-01-30 13:41:21
如果沒有什麼背後,它默認爲false,根據文檔。
但是,如果你想讓它有一個初始值以外false
被實例化,你能做到這一點是這樣的:
public interface IWhatever
{
bool Value { get; set;}
}
public class Whatever : IWhatever
{
public bool Value { get; set; }
public Whatever()
{
Value = true;
}
}
我的意思一樣,例如將其設置爲TRUE;。 – 2011-05-04 15:37:00
@Yippie不,C#不允許你這樣做。如果你想讓它有一個沒有後臺字段的初始值,你需要在構造函數中設置它。 – 2011-05-04 15:43:05
默認情況下Value
將false
但它可以在初始化構造函數。
您不能將Value
設置爲除屬性上數據類型本身的默認值之外的任何其他缺省值。您需要在Whatever
的構造函數中指定默認值。
的默認值現在是false
。要使其成爲true
,請將其設置在構造函數中。
public class Whatever : IWhatever
{
public bool Value { get; set; }
public Whatever()
{
this.Value = true;
}
}
您可以在構造函數中設置默認值。
//constructor
public Whatever()
{
Value = true;
}
public bool Value { get; set; }
順便說一句 - 有自動屬性,你仍然有支持字段,它只是被編譯器(syntactic sugar)爲您生成。
你的意思是,你可以如指定默認在這個例子中,讓Value默認爲True? – tomasmcguinness 2011-05-04 15:37:43