amvm Posted August 15, 2012 at 09:36 PM Report Share #472390 Posted August 15, 2012 at 09:36 PM 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 More sharing options...
ribeiro55 Posted August 15, 2012 at 09:59 PM Report Share #472391 Posted August 15, 2012 at 09:59 PM 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 More sharing options...
amvm Posted August 16, 2012 at 09:37 AM Author Report Share #472418 Posted August 16, 2012 at 09:37 AM olá Mas o problema nao é o método remove... quer dizer pelos vistos também era, mas ele nunca aceita a condição (if...) mesmo sendo objectos iguais, diz sempre que nao, e claro, não remove Link to comment Share on other sites More sharing options...
jlpcalado Posted August 18, 2012 at 01:18 PM Report Share #472736 Posted August 18, 2012 at 01:18 PM 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 More sharing options...
ribeiro55 Posted August 18, 2012 at 03:44 PM Report Share #472748 Posted August 18, 2012 at 03:44 PM Também podes implementar directamente um Operator = na classe e depois testar igualdade normalmente. 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now