所以这是简单的代码:
[System.ComponentModel.DefaultValue(true)]
public bool AnyValue { get; set; }
我确信我不会再将AnyValue设置为false(我刚创建它)。此属性是Page class of ASP.NET的属性。而且我在按钮事件处理函数中检查值。但不知何故,它仍然是错误的。 我想知道它实际上是真的吗?在编译时?当类被实例化时?
你怎么看待我做错了什么?
答案 0 :(得分:10)
DefaultValue执行 NOT 设置值。
它的作用是告诉VisualStudio默认值是什么。当在表单上选择可视元素(按钮,列表框等)并显示“属性”面板时,VS将粗体属性值,这些属性设置为除DefaultValue中给出的值之外的其他值。 / p>
因此,在您的情况下,由于AnyValue为false,但DefaultValue为true,因此将在“属性”面板中以粗体显示 false 。如果您要手动将其更改为“true”,则它将以非粗体显示。
答案 1 :(得分:0)
那么设置默认值的最佳方法是什么?
这对我来说似乎是个好方法;
private bool myVal = true;
public bool MyVal
{
get { return myVal; }
set { myVal = value; }
}
答案 2 :(得分:0)
如前所述,它没有设定值。
除PropertyGrid
之外,[DefaultValue]
也会被各种序列化程序实现使用,例如XmlSerializer
和DataContractSerializer
。有关信息,还有第二种模式:bool ShouldSerialize{Name}()
受到所有3个人的尊重。