是否可以在vb.net中合并对象?

时间:2013-08-28 17:46:50

标签: vb.net object

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

如果您有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

3 个答案:

答案 0 :(得分:5)

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

Class OptionObject
  Public Shared Operator +(left as OptionObject, right as OptionObject) As OptionObject
    ' Insert merge logic here 
  End Operator  
End Class

答案 1 :(得分:0)

为了做到这一点,你必须重载“+”运算符,或者创建一个全新的函数。该函数必须指示如何合并对象(确定用于新对象的属性值等)。

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

答案 2 :(得分: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