关于.Net中DefaultValueAttribute类的用法

关于.Net中DefaultValueAttribute类的用法,.net,asp.net,default-value,.net,Asp.net,Default Value,下面是简单的代码: [System.ComponentModel.DefaultValue(true)] public bool AnyValue { get; set; } 我确信我没有再次将任何值设置为false,我只是创建了它。此属性是ASP.NET页面类的属性。我正在检查按钮事件处理函数中的值。但不知何故,这仍然是错误的。 我想知道它到底是什么时候变为真的?在编译时?什么时候实例化类 您认为我做错了什么?DefaultValue未设置该值 它所做的是告诉VisualSt

下面是简单的代码:

    [System.ComponentModel.DefaultValue(true)]
    public bool AnyValue { get; set; }
我确信我没有再次将任何值设置为false,我只是创建了它。此属性是ASP.NET页面类的属性。我正在检查按钮事件处理函数中的值。但不知何故,这仍然是错误的。 我想知道它到底是什么时候变为真的?在编译时?什么时候实例化类

您认为我做错了什么?

DefaultValue未设置该值

它所做的是告诉VisualStudio默认值是什么。在窗体上选择可视元素按钮、列表框等,并显示属性面板时,VS将加粗属性值,这些属性值设置为DefaultValue中给定值以外的值

因此,在您的情况下,由于AnyValue为false,但它的DefaultValue为true,因此is将在属性面板中以粗体显示false。如果要手动将其更改为true,则它将以非粗体显示。

DefaultValue未设置该值

它所做的是告诉VisualStudio默认值是什么。在窗体上选择可视元素按钮、列表框等,并显示属性面板时,VS将加粗属性值,这些属性值设置为DefaultValue中给定值以外的值


因此,在您的情况下,由于AnyValue为false,但它的DefaultValue为true,因此is将在属性面板中以粗体显示false。如果您手动将其更改为true,那么它将以非粗体显示。

那么像我所说的那样设置默认值的最佳方法是什么

这对我来说似乎是个好办法

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

那么,像我所说的那样设置默认值的最佳方法是什么呢

这对我来说似乎是个好办法

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

如前所述,它不设置值


除了PropertyGrid之外,[DefaultValue]还可用于各种序列化程序实现,如XmlSerializer和DataContractSerializer。关于信息,还有第二种模式:bool ShouldSerialize{Name},这是所有3种模式都遵守的。

如前所述,它不设置值


除了PropertyGrid之外,[DefaultValue]还可用于各种序列化程序实现,如XmlSerializer和DataContractSerializer。关于信息,还有第二种模式:bool应该序列化{Name},这是所有3种模式都遵守的。

这很好。或者在构造函数中设置它,这很好。或者在构造函数中设置它。