为什么未声明的带下划线的变量没有给出调试错误

时间:2019-05-08 13:57:43

标签: vb.net visual-studio-2017

此代码在VS 2017(15.9.5)中没有给出编译错误吗?

为什么会这样?

Class BugInclass
    Public Property myProp As String
    Public Sub MyFct()
        myProp = _myProp
    End Sub
End Class

请注意,“ _ myProp”没有被贴花-就像对待它是“ myProp”一样。

1 个答案:

答案 0 :(得分:3)

您使用的是自动属性,它们只是语法糖。您编写以下代码:

Public Property myProp As String

但是实际上要编译的是这个

Private _myProp As String

Public Property myProp As String
    Get
        Return _myProp
    End Get
    Set
        _myProp = value
    End Set
End Property

第二个片段是我们几年前必须为所有属性编写的内容。自动属性要方便得多,但是旧的冗长代码仍然在幕后,因此隐式支持字段仍然存在。