2010-10-13 2 views
1

Я проверял везде и не могу найти решение. У меня есть следующее:Collection. Состояния() не работает

Dim users as New List(of TUser) 

Private Sub AddSelectedUsers() 

For Each user as TUser in gridSelectedItems() 

If Not users.Contains(user) Then 

users.Add(user) 

End If 

Next 

End Sub 

«Содержит» не работает. Я продолжаю получать дубликаты в списке пользователей.

ответ

5

Метод List.Contains() использует оператор равенства по умолчанию. Поскольку TUser, по-видимому, является классом, List.Contains() будет соответствовать только если вы ссылаетесь на тот же самый экземпляр TUser в обоих сравнениях, по-видимому, это не так. См. Более подробное объяснение here.

Решение заключается в реализации переопределения равенства для класса TUser, как в примере here.

+0

Я подозревал, что это может быть проблемой, потому что gridSelectedItems() - это список, переданный «ByRef» в эту форму. Я сделаю это. –

+0

Я закончил переопределять равные в моем классе TUser, и это работает. –

Смежные вопросы