2008-11-06 47 views
1

DefaultValueAttribute類的用法所以這裏是一個簡單的代碼:有關.NET中

[System.ComponentModel.DefaultValue(true)] 
    public bool AnyValue { get; set; } 

我肯定不設置AnyValue虛假再次(我剛剛創建的話)。此屬性是ASP.NET的Page類的屬性。我正在努力處理按鈕事件處理函數中的值。但不知何故,它仍然是錯誤的。 我想知道它究竟是什麼時候設置的?在編譯時?當類被實例化?

你覺得我做錯了什麼?

回答

10

DefaultValue does NOT設置值。

它的作用是告訴VisualStudio默認值是什麼。當在窗體上選擇一個可視元素(按鈕,列表框等),並且顯示屬性面板時,VS將加粗屬性的值設置爲DefaultValue中給定的值以外的值。

因此,在您的情況下,由於AnyValue爲false,但它的DefaultValue爲true,因此將在屬性面板中以粗體顯示false。如果您要手動將其更改爲「true」,則它將顯示爲非粗體。

0

那麼設置默認值的最佳方式是什麼?

這對我來說似乎是一個好方法;

private bool myVal = true; 
    public bool MyVal 
    { 
     get { return myVal; } 
     set { myVal = value; } 
    } 
+0

這很好。或者在構造函數中設置它。 – 2008-11-06 15:28:17

0

如前所述,它沒有設置數值。

除了PropertyGrid,[DefaultValue]也被各種串行器實現使用,諸如XmlSerializerDataContractSerializer。對於信息,還有第二種模式:bool ShouldSerialize{Name}(),這是所有3尊重。