użyć HashSet<string>
zamiast List<string>
. Jest przygotowany, aby osiągnąć lepszą wydajność, ponieważ nie musisz dostarczać czeków na żadne przedmioty. Kolekcja będzie nim zarządzać. Taka jest różnica między list
i set
. Dla próbki:
HashSet<string> set = new HashSet<string>();
set.Add("a");
set.Add("a");
set.Add("b");
set.Add("c");
set.Add("b");
set.Add("c");
set.Add("a");
set.Add("d");
set.Add("e");
set.Add("e");
var total = set.Count;
Ogółem 5
i wartości są a
, b
, c
, d
, e
.
Implementacja List<T>
nie daje natywnie. Możesz to zrobić, ale musisz zapewnić tę kontrolę. Na próbce, to extension method
:
public static class CollectionExtensions
{
public static void AddItem<T>(this List<T> list, T item)
{
if (!list.Contains(item))
{
list.Add(item);
}
}
}
i używać go:
var list = new List<string>();
list.AddItem(1);
list.AddItem(2);
list.AddItem(3);
list.AddItem(2);
list.AddItem(4);
list.AddItem(5);
lines2 lista ciąg przepraszam że popełnił mały błąd podczas kopiowania i wklejania kodu – vini
może istnieć przestrzeń pomiędzy dwoma strunami jak = SBC BGP – vini
Czy można uznać za pomocą HashSet zamiast listy dla w tym przypadku będzie działać znacznie lepiej. –
bashmohandes