最近在定制班上工作很多,我喜欢你可以拥有的力量,但我遇到了一些我无法解决和/或在网上找到任何帮助的东西。
我有一个具有属性的类列表,我希望只存储从数据库中提取的信息。
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'通过两个参数,它总是需要传递它们。我发现解决这个问题的唯一方法是将它们作为可选字段,我觉得这是解决这个问题的正确方法。我想要在课堂上做什么,或者使用结构会更简单?
答案 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种方法可以创建对象:完全初始化,部分(仅名称)或空白对象。你经常需要一个简单的构造函数" - 没有参数的一个 - 用于其他目的:序列化器,集合编辑器等将不知道如何使用参数化构造函数,并且需要一个简单的构造函数。
如果应用程序中的规则是除非定义了Name
和Value
,否则没有理由存在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))
每种类型都有一个默认值,因此这不仅仅是字符串。