我有这堂课:
Public Class Foo
Public X As Integer
Public Y As Integer
Public Value As String
Public Shared Widening Operator CType(v As String) As Foo
Dim fobj As New Foo
fobj.Value = v
Return fobj
End Operator
End Class
此代码:
Public Sub Test()
Dim f As New Foo
f.X = 3
f.Y = 10
f = "Bar"
End Sub
在f =“Bar”赋值中,我松开了先前分配的先前X和Y值。 有一种方法可以重载操作符以分配给“Value”成员而不是创建一个新的Foo类?或者一种获取赋值目标的方法来复制值
提前致谢。
答案 0 :(得分:2)
可能是你最接近的地方:
Public Shared Operator &(ByVal x As Foo, ByVal y As String) As Foo
x.Value = y
Return x
End Operator
f.X = 3
f.Y = 10
f &= "Bar"
答案 1 :(得分:0)
当然它会覆盖它返回一个新的Foo实例,你指示它放入变量f,它确实包含了前一个Foo。
我认为最好定义一个构造函数(例如NEW)。
Public Class Foo
Public Property Value() As String
Public Property X() As Integer
Public Property Y() As Integer
Public Sub New()
End Sub
Public Sub New(ByVal Value As String, x As Integer, y As Integer)
Value = Value
x = x
y = y
End Sub
End Class
然后你可以简单地写
Dim f0 = New Foo("ABC", 1, 2)
Dim f1 = New Foo() With {.Value = "ABC", .X = 1, .Y = 2}