1

所以这里是简单的代码:

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

我确定我不会再次将 AnyValue 设置为 false(我刚刚创建了它)。此属性是 ASP.NET 的 Page 类的属性。我正在检查按钮事件处理函数中的值。但不知何故,它仍然是错误的。我想知道它实际上何时设置为真?在编译时?什么时候实例化类?

你觉得我做错了什么?

4

3 回答 3

10

DefaultValue 不设置值。

它的作用是告诉 VisualStudio 默认值是什么。当在表单上选择一个可视元素(按钮、列表框等)并显示“属性”面板时,VS 会将设置为 DefaultValue 中给出的值之外的属性值加粗。

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

于 2008-11-06T15:10:04.003 回答
0

那么按照我的意思设置默认值的最佳方法是什么?

这对我来说似乎是个好方法;

    private bool myVal = true;
    public bool MyVal
    {
        get { return myVal; } 
        set { myVal = value; }
    }
于 2008-11-06T15:23:22.497 回答
0

如前所述,它不设置值。

除了PropertyGrid,[DefaultValue]还被各种序列化器实现使用,例如XmlSerializerDataContractSerializer。对于信息,还有第二种模式:bool ShouldSerialize{Name}()所有 3 都尊重。

于 2008-11-06T22:04:43.823 回答