Il controllo numero / dimensione / lunghezza è inferiore a 0 necessario nelle lingue moderne?

5

Il controllo numero / dimensione / lunghezza è inferiore a 0 necessario nelle lingue moderne? Ad esempio, in C # I spesso verificheremo se il conteggio di una raccolta è inferiore o uguale a 0.

Suppongo che ciò sia stato fatto in lingue più vecchie, come C, dove potresti avere una dimensione inferiore a 0.

C'è mai un caso in cui è possibile avere una dimensione / lunghezza / conteggio di un oggetto o di un tipo primitivo inferiore a 0?

    
posta TruthOf42 09.01.2014 - 22:47
fonte

2 risposte

12

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).

    
risposta data 09.01.2014 - 23:43
fonte
3

Puoi usare Any che verrà restituito non appena ci sarà un elemento nella raccolta, mentre l'utilizzo di Length eseguirà effettivamente l'intera raccolta e la conteggi, che è una cattiva idea. Quindi Any è pigro, Length è desideroso. La maggior parte dei casi, Any è sufficiente.

    
risposta data 20.01.2015 - 23:11
fonte

Leggi altre domande sui tag