CType运算符,分配给成员

时间:2012-01-30 22:31:38

标签: .net vb.net

我有这堂课:

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类?或者一种获取赋值目标的方法来复制值

提前致谢。

2 个答案:

答案 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}