Option Strict和DefaultValueAttribute

时间:2010-11-24 07:03:04

标签: vb.net

刚刚花了几个小时试图解决为什么我的Xml序列化代码无效。请考虑以下事项:

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

为什么不管选项严格打开(或不打开)都允许这样做?

2 个答案:

答案 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