我不确定如何提出这个问题。希望我的解释会澄清:
我在一个类中有一个公共方法,比如说Widget
,它会获取一个Widgets列表并对它们进行更改。但是,有时,调用该方法的Widget位于该列表中。有没有办法将当前对象设置为列表中的项目之一?
例如,这就是我要做的事情:
Public Class Widget()
'...other stuff'
Public Sub Update()
'do some stuff...'
For Each w As Widget In List(Of Widget)
'update widgets'
If w.ID = ID Then
Me = w '<----- here is what I am trying to do, but it wont let me'
End If
Next
End Sub
End Class
答案 0 :(得分:3)
不,但 可以做的是让你的对象触发引用(父)对象侦听的事件,并适当地替换该对象。
Public Class Widget
Public Event Replace As ReplaceReferenceEventHandler
Public Sub Update()
'do stuff
For Each w As Widget In List(Of Widget)
'update widgets'
If w.ID = ID Then
Replace(Me, w)
End If
Next
End Sub
End Class
Public Delegate Sub ReplaceReferenceEventHandler(ByVal sender As Object, ByVal replaceWith As Object)
答案 1 :(得分:1)
只需返回您要使用的对象,并在呼叫站点设置引用。
Public Class Widget()
'...other stuff'
Public Function Update() As Widget
'do some stuff...'
return SelectedWidget
End Sub
End Class
myWidget = myWidget.Update()
答案 2 :(得分:0)
我引用代码运行的类实例,不能更改。 (这在c#中) 它不能像变量一样使用。
答案 3 :(得分:0)
你想在更高层次上做什么?
我的意思是,你为什么试图将当前对象“更改”为该列表中的一个对象?
如果你想更改其他人对你当前对象的引用,以便他们现在指向另一个对象,那么不,你不能这样做。
此外,您似乎已经拿走了“我”这个对象,并尝试将其分配给“我”。 这是为了什么目的?