In .NET Framework (di cui il linguaggio C # è una parte), la maggior parte degli indici ordinari (con la notevole eccezione delle posizioni dei file, che usano un long
firmato a 64 bit) sono standardizzati a una percentuale firmata di 32 bit codice%.
Quindi, ad esempio, quando ottieni lunghezza di una stringa , ti viene restituito un numero che può contenere valori negativi, ma in pratica non sarà mai negativo.
Tuttavia, ciò non è vero per tutte le operazioni con le stringhe. int
restituisce ancora un IndexOf()
con segno, ma restituirà un valore di -1 se la stringa di ricerca non viene trovata. Questo è in parte il motivo per cui è stato scelto int
firmato per tali indici; per fornire la possibilità di restituire valori negativi per scopi di segnalazione.
Poiché gli interi con segno vengono sempre restituiti da tali operazioni, il codice
if (s.length <= 0)
è coerente con l'idea che "sto controllando per vedere se questa stringa ha qualcosa in essa", poiché tutte queste lunghezze saranno un numero positivo.
Ma hai ragione; tecnicamente non è necessario controllare un numero negativo in quei casi in cui non ne avrai mai uno (cioè lunghezza).