Ответ 1
Ну, что-то должно зациклиться. Будет выполнено любое из следующих действий:
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);
Все версии, использующие выражение лямбда, кажутся мне излишними, но они потенциально полезны, если вы оказываетесь в ситуации, когда вы не знаете фактического значения, которое вы ищете, - просто какое-то условие.
Если вы знаете, что массив отсортирован, вы можете использовать:
bool exists = Array.BinarySearch(array_1, variable_1) >= 0;
Это будет O (log n), а не O (n) (что все остальные), но для этого требуется сначала отсортировать массив.
Лично я обычно бываю с самой первой формой - если вы используете .NET 3.5 или выше.
Если вам нужно проверить несколько элементов и массив большой, вы можете создать HashSet<int>
:
HashSet<int> hashSet = new HashSet<int>(array_1);
bool exists = hashSet.Contains(variable_1);