Jump to content

remover elem de arrayList


amvm

Recommended Posts

Boa noite,

Estou com duvidas na remoção de um elemento de um arrayList. Já fiz debug e os objectos a comparar são iguais e mesmo assim não remove. Existe uma outra forma de comparar objectos?

   Public Sub removePeople(ByVal p As Pessoa)
    Dim i As Integer
    For i = 0 To contacts.Count - 1
	    If contacts.Item(i) Is p Then
		    contacts.Remove(i)
	    End If
    Next
   End Sub

cumps

Link to comment
Share on other sites

Não remove e bem, porque estás a pedir-lhe para remover o primeiro integer com o valor de i que ele encontrar.

O método Remove é usado para remover a primeira ocorrência de um objecto, ou seja, podes fazer directamente um Remove(p).

No entanto, se quiseres manter o ciclo por alguma razão, tens de usar o método RemoveAt(i), esse sim, atende ao índice.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Boa Tarde.

"mesmo sendo objectos iguais"

o que se passa é que os objetos, apesar de possuírem as mesmos valores das propriedades não são iguais.

2 objetos (instâncias da uma classe) só são iguais se tiverem a mesma referência (excepto para Strings...(?!))

Uma solução possível é criar na classe 'Pessoa' uma Propriedade que aglutine o conjunto das outras a comparar e fazer a comparação entre os objetos com base nessa propriedade.

Por exemplo:

If contacts.Item(i).PropAComparar = p.PropAComparar ...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.