一行 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 时未初始化,但在获取 属性 时已初始化。
所以这不仅仅是语法上的便利,还有功能上的区别。
我有一个简单的问题。
单行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 时未初始化,但在获取 属性 时已初始化。
所以这不仅仅是语法上的便利,还有功能上的区别。