VB.NET设置类属性初始值

VB.NET设置类属性初始值,vb.net,class,oop,constructor,new-operator,Vb.net,Class,Oop,Constructor,New Operator,基于类创建对象时。有些属性我不希望值为0或为零。所以我想把初始值设为1 这最好通过构造函数来完成吗 Class Product Public Property Price As Decimal Public Sub New() Price = 1 End Sub End Class 或者你也可以这样写?第二个版本是否将该值固定为1,或者如果它是这样写的,您是否也可以更改该值 Class Product Public Property Price

基于类创建对象时。有些属性我不希望值为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

这两种方法都是合法的,都不会产生固定值。第二个将在构造函数(Sub-New)运行之前初始化Price