Ho bisogno di verificare che un int [] contenga solo determinati valori (in questo caso 0s & 1s) e genera un'eccezione se non lo fa.Come posso verificare se int [] contiene solo determinati numeri?
Esiste un modo più efficiente per farlo rispetto a una delle seguenti soluzioni?
semplice (ma O (n)):
for(int n = 0; n < myArray.Length; n++)
if(!(myArray[n] == 0 || myArray[n] == 1))
throw new Exception("Array contains invalid values");
Utilizzando Dove():
if(myArray.Where(n => !(n==1 || n==0)).ToArray().Length > 0)
throw new Exception("Array contains invalid values");
Interrompere l'elaborazione quando si incontra un valore non valido o si desidera convalidare l'intera raccolta? – BentOnCoding
Sotto i vincoli, il tuo ciclo 'for' è il meglio che puoi ottenere. Sembra che tu pensi che LINQ possa fare "magia" perché non hai detto O (N) per "usare Dove()" –
Inoltre, non posso fare a meno di pensare a [questo] (http: //i.imgur. com/dAEp7Wu.jpg? 1) –