如何使用不同数量的属性值实例化Class对象

时间:2014-10-22 19:12:31

标签: vb.net winforms class structure

最近在定制班上工作很多,我喜欢你可以拥有的力量,但我遇到了一些我无法解决和/或在网上找到任何帮助的东西。

我有一个具有属性的类列表,我希望只存储从数据库中提取的信息。

Public Class CustomClass

        Public _Values As String
        Public _Variables As String


        Public ReadOnly Property Values() As String
            Get
                Return _Values
            End Get
        End Property

        Public ReadOnly Property Variables() As String
            Get
                Return _Variables
            End Get
        End Property

        Sub New(ByVal values As String, ByVal variables As String)
            _Values = values
            _Variables = variables
        End Sub
End Class

我将迭代一些数据库条目,并且当我点击它们时我想将它们存储到适当的属性中(因为我不能立即将它们全部用到,这是我的问题的一部分)。我希望能够一次添加值或变量,而不是两者都添加,但因为我有子程序' New'通过两个参数,它总是需要传递它们。我发现解决这个问题的唯一方法是将它们作为可选字段,我觉得这是解决这个问题的正确方法。我想要在课堂上做什么,或者使用结构会更简单?

2 个答案:

答案 0 :(得分:1)

您可以重载构造函数:

Friend Class Foo
    ' using auto-implement props:
    Public Property Name As String      ' creates a _Name backing field
    Public Property Value as Integer

    Public Sub New(newN as String, newV as Integer)
        ' access "hidden" backing fields if you want:
        _Name = newN
        _Value = newV
    End Sub

    Public Sub New()            ' simple ctor
    End Sub

    Public Sub New(justName As String)
        ' via the prop
        Name = justName
    End Sub
End Class

现在有3种方法可以创建对象:完全初始化,部分(仅名称)或空白对象。你经常需要一个简单的构造函数" - 没有参数的一个 - 用于其他目的:序列化器,集合编辑器等将不知道如何使用参数化构造函数,并且需要一个简单的构造函数。

如果应用程序中的规则是除非定义了NameValue,否则没有理由存在MyFoo,只实施New(String, Integer) ctor强制执行该规则。也就是说,它首先是关于应用规则,然后是关于编码的便利性。

Dim myFoo As New Foo         ' empty one
myFoo.Name = "ziggy"         ' we only know part of it

答案 1 :(得分:0)

由于字符串的默认值为空,因此您可以为您没有的值传递任何内容。 IE

Collection.Add(New CustomClass("My Value",Nothing))

每种类型都有一个默认值,因此这不仅仅是字符串。