由于某些原因,我在这样的声明中初始化一个类成员似乎是错误的:
Class Foo
private _bar as New List(Of String)
Public Sub New()
End Sub
End Class
这似乎“更好”:
Class Foo
private _bar as List(Of String)
Public Sub New()
_bar = New List(Of String)
End Sub
End Class
这question表示没有区别。有一种方式比另一种更好(更好的可读性,隐藏的陷阱等等)?
答案 0 :(得分:2)
客观地说,我更喜欢构造函数,因为构造函数的职责是初始化所有相关成员。
该成员本身太愚蠢,无法知道他应该活到什么时候。 就像分娩一样,宝宝不会决定何时出生。母亲(建设者)知道什么时候到来!
在创建类的新实例的那一刻,成员被声明为第一个并且在构造函数之后(至少调试器以这种方式步进)
所以如果你有这个课程:
Public Class Test
Private test1 as List(Of Integer)(New Integer() {1, 2})
Public Sub New()
test1 = new List(Of Integer)(New Integer() {3, 4})
End Sub
End Class
在本能化后,test1将包含3和4。
如果一个班级中有很多成员,那么更具可读性。
答案 1 :(得分:0)
我发现自己使用这两种方法来做到这一点,但如果它是一个具有大量构造函数和大量成员的类,我不想记得设置每个变量每个构造函数,所以在这种情况下我宁愿使用
声明值public class test
private test1 as list(of String) = new List(of String)
public sub new()
End sub
End class
但我认为这一切归结为偏好
答案 2 :(得分:0)
在创建新课程时,我几次问自己这个问题。发现两者之间没有真正的区别,我现在初始化声明中的所有内容,除非涉及参数,然后才使用构造函数。毕竟,构造函数可以覆盖声明值,因此它不必是一个或另一个。
此外,当时我还受到this old article的影响,它提到了如何为数据绑定工作初始化变量,而工作示例在声明中使用了初始化,但在现代版本的Visual Studio / .NET框架中这似乎没有任何区别。
在一天结束时,这似乎是一个偏好问题,对我来说,初始化声明意味着更少的行,这意味着代码更具可读性。