Bene qualcosa deve effettuare il ciclo. Una qualsiasi delle seguenti funzionerà:
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);
Tutte le versioni utilizzando un'espressione lambda voglia eccessivo per me, ma sono potenzialmente utile se vi trovate in una situazione in cui non si conosce il valore effettivo stai cercando - solo alcune condizioni.
Se si sa che l'array è ordinato, è possibile utilizzare:
bool exists = Array.BinarySearch(array_1, variable_1) >= 0;
Questo sarà O (log n) piuttosto che O (n) (che tutti gli altri lo sono), ma richiede la matrice da ordinare prima.
Personalmente normalmente andrei con il primo modulo, supponendo che tu stia utilizzando .NET 3.5 o versione successiva.
Se è necessario verificare la presenza di diversi elementi e la matrice è di grandi dimensioni, si consiglia di creare un HashSet<int>
:
HashSet<int> hashSet = new HashSet<int>(array_1);
bool exists = hashSet.Contains(variable_1);
fonte
2010-04-05 16:13:41
In generale, per verificare l'esistenza all'interno di una struttura multi-valore richiederà una certa quantità di loop. Se hai trovato un collo di bottiglia nell'applicazione (per mezzo di un profilo) con un ciclo, puoi aggiungere un indice per farlo andare più veloce. In .NET, il modo più semplice per farlo è probabilmente un dizionario o HashSet. –