2

由于某种原因,在这样的声明中初始化类成员对我来说似乎是错误的:

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

这个问题说没有区别。一种方法比另一种更好吗(更好的可读性、隐藏的陷阱等)?

4

3 回答 3

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。

如果一个班级有很多成员,它也更具可读性。

于 2013-06-06T16:09:13.070 回答
0

我发现自己使用这两种方法来做到这一点,但如果它是一个具有大量构造函数和大量成员的类,我不想记住在每个构造函数中设置每个变量,所以在那种情况下,我宁愿使用

public class test

private test1 as list(of String) = new List(of String)

public sub new()
End sub

End class

但我认为这一切都归结为偏好

于 2013-06-06T23:27:12.540 回答
0

在创建新课程时,我曾多次问过自己这个问题。发现两者之间没有真正的区别,我现在在声明中初始化所有内容,除非涉及参数,然后才使用构造函数。毕竟,构造函数可以覆盖声明值,所以它不必是一个另一个。

此外,当时我还受到这篇旧文章的影响,该文章提到了如何初始化变量以使数据绑定起作用,并且工作示例在声明中使用了初始化,但在现代版本的 Visual Studio/.NET 框架中,这似乎不是再做任何改变。

归根结底,这似乎是一个偏好问题,对我来说,初始化声明意味着更少的行,这意味着代码更具可读性。

于 2013-06-07T01:26:49.760 回答