Da molto tempo ormai avevo l'abitudine di controllare se una collezione (array, dizionario, qualunque cosa) non è vuota con una non uguaglianza. In questo modo:
if ( MyArray.Length < 1 )
{
// Do something if the array is empty
}
A volte lo faccio anche per le stringhe e altri tipi di raccolte. In pratica, dovrebbe essere uguale a
if ( MyArray.Length == 0 )
{
// Do something if the array is empty
}
Perché la lunghezza della raccolta non dovrebbe mai essere inferiore a 0 comunque, giusto? Quindi ho sempre pensato: che diamine, includerò la disuguaglianza e sarei protetto da una doppia sicurezza anche nel caso in cui il cielo cada.
Ma oggi mi è sembrato che la seconda versione fosse più leggibile della prima. Esprime più chiaramente che il caso che sto cercando è l'array vuoto, che non è immediatamente evidente dalla prima versione. Quindi forse dovrei usarlo invece? Dal momento che, sai, se una lunghezza di raccolta è inferiore a 0, allora sono fottuto comunque.
Quale versione usi e quale suggeriresti ad altri di usare (e perché)?
Chiarificazione: era inteso come una domanda sulle raccolte semplici, dove ottenere .Length
è O (1) o comunque poco costoso. Se .Length
è un'operazione non banale (come richiedere l'iterazione attraverso un elenco collegato o contattare il DB), allora questo è l'approccio sbagliato del tutto.
La domanda era circa x < 1
vs x == 0
dove x è un numero intero non negativo (sebbene non possa essere digitato come tale).