Existe alguma maneira para definir uma instância de um objeto para o objeto instanciado atual dentro de sua própria classe?

votos
1

Eu não tenho certeza realmente como fazer essa pergunta .. espero que a minha explicação vai esclarecer:

Eu tenho um método público de uma classe, digamos Widgetque leva uma lista de Widgets e faz mudanças para eles. No entanto, às vezes, o Widget de chamar o método está nessa lista. Existe alguma maneira para definir o objeto atual como um dos itens na lista?

Por exemplo, aqui está o que estou tentando fazer:

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
Publicado 26/08/2009 em 22:56
fonte usuário
Em outras línguas...                            


4 respostas

votos
3

Não, mas o que você pode fazer é ter o seu objeto acionar um evento que o (pai) objeto referência escuta, e substitui o objeto de forma adequada.

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)
Respondeu 26/08/2009 em 23:03
fonte usuário

votos
1

Apenas devolver o objeto que você deseja usar e definir a referência no site da chamada.

Public Class Widget()
    '...other stuff'
    Public Function Update() As Widget
        'do some stuff...'
        return SelectedWidget
    End Sub
End Class

myWidget = myWidget.Update()
Respondeu 26/08/2009 em 23:34
fonte usuário

votos
0

O que você está tentando fazer, a um nível superior?

Quero dizer, por que você está tentando "mudança" o objeto atual em um dos objetos nessa lista?

Se você quiser alterar as referências que outras pessoas têm a seu objeto atual, de modo que eles apontam agora para um outro objeto, então não, você não pode fazer isso.

Além disso, parece que você está tomando o objeto que é "me" já, e tentar atribuí-la a "Me". Qual é a finalidade disso?

Respondeu 26/08/2009 em 23:02
fonte usuário

votos
0

Me referencia a instância da classe em que o código é executado e não pode ser alteradas. (Isso em c #) Ele não pode ser usado como uma variável.

Respondeu 26/08/2009 em 23:01
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more