一行 ReadOnly 属性 和 vb.net 中带有显式 Get 语句的 ReadOnly 之间的区别

Difference between a one-line ReadOnly property and a ReadOnly with explicit Get statement in vb.net

我有一个简单的问题。

单行ReadOnly Property和带有显式Get语句的ReadOnly Property有区别吗?

例如,在 Visual Studio 2010 年,我曾经不得不这样做:

Private _Message As String = ""

Public ReadOnly Property Message As String
    Get
        Return _Message
    End Get
End Property

Public Sub New(Message As String)
    _Message = Message
End Sub

但现在我在 Visual Studio 2015 年,这让我摆脱了这个:

Public ReadOnly Property Message As String

Public Sub New(Message As String)
    Me.Message = Message
End Sub

现在我不是想偷懒,我只是 运行 穿过它,期待 IntelliSense 强制执行 Get 语句。所以我想知道是否有我应该注意的区别。这是不好的做法还是做了一些不同的事情?

我已经在 C# 中找到了大量关于 ReadOnly 的主题和论坛,但是在搜索关于 vb.net.

的主题时,我似乎已经枯竭了

如有任何意见,我将不胜感激。 谢谢! =)

没有显式 getters 和 setter 的属性只是一种语法上的便利。执行上没有区别。您通常应该使用第二个选项,因为它使您的代码更具可读性。如果您需要 getter.

中的额外功能,请仅使用第一个选项

接受的答案似乎是不真实的,至少对 Visual Studio 2022 年的我来说是这样。

当属性不是常量时,必须使用多行声明否则初始值被缓存

这个


    Private ReadOnly Property ConnectionFile As String
        Get
            Return gsapppath & "\connection.txt"
        End Get
    End Property

returns 正确的路径而这个

Private ReadOnly Property ConnectionFile As String = gsapppath & "\connection.txt"

未包含路径,因为变量 gsapppath 在创建 class 时未初始化,但在获取 属性 时已初始化。

所以这不仅仅是语法上的便利,还有功能上的区别。