0

是否可以将两个对象合并在一起?例如:

如果你有 2 个对象

    Dim returnOptionObject1 As OptionObject
    returnOptionObject1 = New OptionObject

    Dim returnOptionObject2 As OptionObject
    returnOptionObject2 = New OptionObject

然后设置它们的值

    returnOptionObject1.EntityID = OptionObject.EntityID
    returnOptionObject1.OptionId = OptionObject.OptionId
    returnOptionObject2.SystemCode = SystemCode
    returnOptionObject2.Facility = OptionObject.Facility

您能否以某种方式将这些对象组合成一个新对象,如

    Dim newObject As OptionObject = returnOptionObject1 + returnOptionObject1
4

3 回答 3

5

这种操作没有固有的语言支持。它需要某种级别的对象特定代码才能使其工作。如果你真的想用来+做合并,你可以定义一个重载的运算符OptionObject并在那里实现合并逻辑。

Class OptionObject
  Public Shared Operator +(left as OptionObject, right as OptionObject) As OptionObject
    ' Insert merge logic here 
  End Operator  
End Class
于 2013-08-28T17:48:29.410 回答
0

为此,您必须重载“+”运算符,或者创建一个全新的函数。该函数必须规定对象如何合并(决定新对象使用哪些属性值等)。

您还可以为新的合并对象创建一个全新的类,但您仍然必须重载“+”运算符或创建自己的合并函数。

于 2013-08-28T17:51:39.370 回答
0

您还可以重载 New 构造函数并将每个对象传递给它。过滤掉每个对象不使用的属性的唯一默认值,设置新对象的属性

    Dim returnOptionObject1 As New OptionObject
    Dim returnOptionObject2 As New OptionObject

    returnOptionObject1.EntityID = 1
    returnOptionObject1.OptionId = 2
    returnOptionObject2.SystemCode = 3
    returnOptionObject2.Facility = 4

    Dim newObject As New OptionObject(returnOptionObject1, returnOptionObject2)

Class OptionObject
    Property EntityID As Integer = 999
    Property OptionId As Integer = 999
    Property SystemCode As Integer = 999
    Property Facility As Integer = 999
    Public Sub New()

    End Sub
    Public Sub New(obj1 As OptionObject, obj2 As OptionObject)
        If obj1.EntityID <> 999 Then
            Me.EntityID = obj1.EntityID
        End If
        If obj1.OptionId <> 999 Then
            Me.OptionId = obj1.OptionId
        End If
        If obj1.SystemCode <> 999 Then
            Me.SystemCode = obj1.SystemCode
        End If
        If obj1.Facility <> 999 Then
            Me.Facility = obj1.Facility
        End If
        If obj2.EntityID <> 999 Then
            Me.EntityID = obj2.EntityID
        End If
        If obj2.OptionId <> 999 Then
            Me.OptionId = obj2.OptionId
        End If
        If obj2.SystemCode <> 999 Then
            Me.SystemCode = obj2.SystemCode
        End If
        If obj2.Facility <> 999 Then
            Me.Facility = obj2.Facility
        End If
    End Sub
End Class
于 2013-08-28T18:16:04.507 回答