【问题标题】:VB.NET setting class property initial valueVB.NET设置类属性初始值
【发布时间】:2016-07-17 03:02:18
【问题描述】:

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

【问题讨论】:

  • 两种方式都是合法的,而且都不会产生固定值。第二个将初始化 Price before 构造函数(Sub New)运行

标签: vb.net class oop constructor new-operator


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    没有区别,您可以更改该值,除非它是 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
    

    【讨论】:

      【解决方案3】:

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

      但是,如果您确实有可以打开构造函数以允许在初始化时根据给定构造函数的某些参数设置这些属性的实例,我会选择始终在构造函数中设置它以保持一致性。如果该属性在初始化时始终具有默认值 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-10
        • 2012-12-15
        • 2011-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多