Perché DateTime.Month è int?

8

In C #, la proprietà DateTime Month ha un tipo di int (un intero con segno a 32 bit) ma il suo intervallo sarà sempre pari a 1-12. Quali sono i motivi per cui il team C # ha scelto int su un tipo numerico più piccolo come byte (numero intero senza segno a 8 bit)?

    
posta Frayt 19.09.2018 - 16:10
fonte

2 risposte

22

int è utilizzato per quasi tutte le variabili intere in .NET anche se spesso un tipo più piccolo sarebbe sufficiente. Inoltre, i tipi non firmati non vengono quasi mai usati sebbene potrebbero esserlo.

Alcuni motivi:

  1. I tipi firmati e non firmati così come i tipi interi di dimensioni diverse possono essere scomodi quando li si combina ( + o < per esempio). Le regole non sono ovvie. Sono uno sviluppatore esperto e non potrei dirti il set completo di regole. Non ho bisogno di sapere.
  2. int è veloce su tutte le architetture comuni. I tipi più piccoli spesso generano conversioni che possono essere più lente.
  3. Le prestazioni non rappresentano un problema per il 99% del codice tipico. Non c'è bisogno di pensare troppo a questo. Usa semplicemente int ovunque.
  4. La leggibilità è molto buona perché l'intenzione è chiara. Un byte suggerirebbe dati binari per esempio. (Vedi il commento di Flater.)

È una convenzione utile utilizzare int .

    
risposta data 19.09.2018 - 16:39
fonte
4

Un mese non è un valore. Un mese è solo un mese.

La mappatura 1-12 (che dovrebbe essere stata 0-11 imo) è fatta solo per rendere più facile fare matematica con essa.

E una volta che inizierai a fare matematica, devi essere pragmatico. Ints sono i default defacto per la matematica intera. Quindi usa quelli.

È ciò che i programmatori si aspettano. Senza contesto: aspettatevi un int.

Poiché non ti interessa se gennaio è 1 (o 0), sei interessato alle risposte a domande come: "quante rate mensili fino a quando ho pagato questo debito". E poi scopri che dovresti aver usato il numero intero invece di byte.

    
risposta data 20.09.2018 - 10:54
fonte

Leggi altre domande sui tag