VB.NET设置class属性初始值

VB.NET setting class property initial value

基于 class 创建对象时。我不希望某些属性的值为 0 或什么都没有。所以我想将初始值设置为1.

这最好通过构造函数完成吗?

Class Product
    Public Property Price As Decimal

    Public Sub New()
        Price = 1
    End Sub
End Class

或者你也可以这样写?这个第二个版本是让值固定为1还是这样写你也可以改变值?

Class Product
    Public Property Price As Decimal = 1
End Class

最后是一样的,在这两种情况下您都可以更改值。

没什么区别,您可以更改该值,除非它是 const 或 readonly。如果你做第二个,编译器会像你的第一个版本一样转换它。这是一个小程序,可以向您展示。这将显示 0,然后显示 1。

Module Module1

    Sub Main()

        Dim o As New B

        Console.ReadLine()

    End Sub

End Module

MustInherit Class A

    Public Sub New()
        Show()
    End Sub

    Public MustOverride Sub Show()

End Class

Class B
    Inherits A

    Private test As Integer = 1

    Public Sub New()
        MyBase.New()
        ' Value for test is being set here
        Show()
    End Sub

    Public Overrides Sub Show()
        Console.WriteLine(test)
    End Sub

End Class

无论您采用哪种方式,它的功能都是一样的,但是请遵循您的团队通常采用的方式以保持一致性。

但是,如果您确实有可以打开构造函数以允许根据提供给构造函数的某些参数在初始化时设置这些属性的实例,我会选择始终在构造函数中设置它以保持一致性。如果 属性 在初始化时始终具有默认值 X,则将其内联在顶部以使其脱颖而出。

基本示例:

Class Product
    Public Property Price As Decimal = 1
    Public Property Quantity As Integer

    Public Sub New()
        Quantity = 0
    End Sub

    Public Sub New(quantity As Integer)
        Quantity = quantity
    End Sub
End Class