代码之家  ›  专栏  ›  技术社区  ›  miroxlav Mohit Deshpande

罗斯林虫?在非共享成员上,我收到错误消息,我正在使用“共享成员初始值设定项”

  •  5
  • miroxlav Mohit Deshpande  · 技术社区  · 10 年前

    具有以下简单代码:

    Class A
    
        Private value As Integer = 1
    
        Sub Action(Optional param1 As Integer = value)
        End Sub
    
    End Class
    

    Visual Studio抱怨默认值( value )有错误 BC30369年 :

    如果没有类的显式实例,则无法从共享方法或共享成员初始值设定项中引用该类的实例成员。

    对于这种情况,这真的是正确的错误吗?该方法未共享。

    在Visual Studio 2012或2013中,相同情况下的错误为

    需要常量表达式。

    这绝对是有意义的。

    1 回复  |  直到 10 年前
        1
  •  2
  •   miroxlav Mohit Deshpande    10 年前

    经过进一步的研究,我认为编译器检查的顺序有问题。

    如果我更改代码 value 成员 Shared ,我得到正确的结果:错误 公元前30059年

    需要常量表达式。

    因为除了常量之外,其他任何内容都不能放入的默认值 可选择的 条款,检查以上内容 公元前30059年 (“常量表达式是必需的。”)显然应早于检查 BC30369年 (如问题所示)。

    我创建了 bug report at Microsoft Connect .