刚刚花了几个小时试图找出为什么我的Xml序列化代码不工作。考虑以下几点:Option Strict和DefaultValueAttribute
<DefaultValueAttribute(False)>
Public Property UserName() As String
为什么这是允许的,无论选项严格是否在(或不)?
刚刚花了几个小时试图找出为什么我的Xml序列化代码不工作。考虑以下几点:Option Strict和DefaultValueAttribute
<DefaultValueAttribute(False)>
Public Property UserName() As String
为什么这是允许的,无论选项严格是否在(或不)?
答案是,VS不会键入检查VB.NET的默认值,而不管OptionStrict与否。
<DefaultValueAttribute(False)>
是有效的,因为属性定义实际上是构造函数而不是类型定义,因此它的类型是DefaultValueAttribute
而不是返回类型boolean
。此外DefaultValueAttribute
的.Value
属性的类型为Object
,因此它的类型也无法比较,因为DefaultValueAttribute
的存在违反Option Strict On
,因此在DefaultValue
属性的范围内忽略Option Strict
。
非常简单。 DefaultValueAttribute
有一个接受布尔值的重载,所以它可以使用或不使用Option Strict
。
检查此页以获取更多信息DefaultValueAttribute Class。