代码之家  ›  专栏  ›  技术社区  ›  Seph

选项Strict和DefaultValueAttribute

  •  0
  • Seph  · 技术社区  · 14 年前

    刚刚花了几个小时试图弄清楚为什么我的Xml序列化代码不能工作。请考虑以下几点:

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

    为什么不管选项是否严格,都允许这样做?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Alex Essilfie    14 年前

    很简单。这个 DefaultValueAttribute 具有接受布尔值的重载,因此无论是否使用 Option Strict 打开。

    查看此页了解更多信息 DefaultValueAttribute Class .

        2
  •  0
  •   Seph    14 年前

    答案是VS不为VB.NET键入check默认值,不管OptionStrict与否。

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