Dobrze coś musi zapętlić. Każda z poniższych zadziała:
bool exists = array.Contains(variable_1);
bool exists = Array.IndexOf(array_1, variable_1) != -1;
bool exists = Array.Exists(array_1, x => x == variable_1);
bool exists = Array.FindIndex(array_1, x => x == variable_1) != -1;
bool exists = array_1.Any(x => x == variable_1);
Wszystkie wersje z wykorzystaniem wyrażenia lambda ochoty overkill do mnie, ale są one potencjalnie użyteczne, jeśli znajdziesz się w sytuacji, w której się nie zna rzeczywistej wartości którego szukasz - po prostu jakiś warunek.
Jeśli wiesz, że tablica jest posortowana, można użyć:
bool exists = Array.BinarySearch(array_1, variable_1) >= 0;
To będzie O (log n) zamiast O (n) (który wszyscy inni), ale wymaga tablica do posortowania jako pierwsza.
Osobiście zwykle korzystam z pierwszej formy - zakładając, że używasz .NET 3.5 lub wyższej.
Jeśli trzeba sprawdzić kilka elementów, a tablica jest duża, może chcesz stworzyć HashSet<int>
:
HashSet<int> hashSet = new HashSet<int>(array_1);
bool exists = hashSet.Contains(variable_1);
W ogóle, w celu sprawdzenia istnienia wewnątrz struktury wielo-wartość będzie wymagać pewnej ilości pętli. Jeśli natrafiłeś na wąskie gardło w swojej aplikacji (za pomocą profilu) z pętlą, możesz dodać indeks, aby działał szybciej. W .NET najprostszym sposobem na osiągnięcie tego jest prawdopodobnie Słownik lub HashSet. –