2010-11-24 64 views
0

刚刚花了几个小时试图找出为什么我的Xml序列化代码不工作。考虑以下几点:Option Strict和DefaultValueAttribute

<DefaultValueAttribute(False)> 
Public Property UserName() As String 

为什么这是允许的,无论选项严格是否在(或不)?

回答

0

答案是,VS不会键入检查VB.NET的默认值,而不管OptionStrict与否。

<DefaultValueAttribute(False)>是有效的,因为属性定义实际上是构造函数而不是类型定义,因此它的类型是DefaultValueAttribute而不是返回类型boolean。此外DefaultValueAttribute.Value属性的类型为Object,因此它的类型也无法比较,因为DefaultValueAttribute的存在违反Option Strict On,因此在DefaultValue属性的范围内忽略Option Strict

1

非常简单。 DefaultValueAttribute有一个接受布尔值的重载,所以它可以使用或不使用Option Strict

检查此页以获取更多信息DefaultValueAttribute Class

相关问题