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