2009-10-20 21 views
5

Czy tego rodzaju testowanie jest niezbędne podczas usuwania elementu?C# Lista <T> Zawiera test

if (_items.Contains(item)) 
{ 
    _items.Remove(item); 
} 

A co z tym testem?

if (!_items.Contains(item)) 
{ 
    _items.Add(item); 
} 
+2

Dlaczego po prostu nie przeczytasz dokumentacji i nie spróbujesz? Wygląda na to, że łatwo jest się o tym dowiedzieć. –

+4

Nie widzę, co jest złego w zadawaniu pytania na Stackoverflow, nawet jeśli masz rację, że czytanie dokumentacji jest zawsze dobrym odruchem. Odpowiedzi w tym miejscu mogą również dostarczyć dodatkowych informacji, które mogą być dla niego interesujące (np. Wzmianka o Hashset w drugiej odpowiedzi). –

Odpowiedz

11

Nie trzeba testować, aby usunąć. Funkcja remove() zwróci wartość false, jeśli nic nie usunie.

Jeśli nie chcesz, aby zduplikowane elementy na liście można było przetestować przed dodaniem. W przeciwnym razie będziesz mieć duplikaty.

Zobacz także: http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

+2

Jeśli nie chcesz duplikatów, nie powinieneś testować; powinieneś użyć kolekcji, która nie pozwala na duplikowanie. W przeciwnym razie nie masz bezpieczeństwa wątków. – Tordek

+0

Założenie, że bezpieczeństwo wątków jest problemem. Jeśli tak jest, musisz również upewnić się, że twoja klasa kolekcji jest wątkowo bezpieczna (domyślam się, że MS może być, idk). – snarf

7

Można również użyć HashSet <T> jeśli chcesz mieć możliwość dodawania() element kilka razy i ma istnieć tylko w zbiorach raz, bez sprawdzania Zawiera() pierwszy.

Powiązane problemy