2010-04-16 11 views

risposta

12

Non è molto utile, in realtà, tranne che se il tipo sottostante di default (int) non è abbastanza per voi, vale a dire. vuoi usare valori interi più alti di quello, allora puoi farlo long. Questo può essere utile quando hai un enum [Flags] con più di 32 valori.

È possibile farlo byte o short solo per limitare l'intervallo di valori, ma in realtà richiederà ancora 4 byte (ad esempio lo stesso di int).

+3

Hai una citazione per l'ultima parte? – porges

+9

Per una singola variabile l'ultima parte potrebbe essere corretta a causa del riempimento. Tuttavia, credo che se si dispone di una vasta gamma di enum con un tipo di byte sottostante, sarà come avere un 'byte []' invece di un 'int []'. –

+0

Sì, quello che ha detto Jon Skeet. Ma chi diavolo usa una serie di enumerazioni? :) – EMP

3

Da enum (C# Reference)

Il tipo sottostante specifica quante memoria viene allocata per ciascun enumeratore. Tuttavia, è necessario un cast esplicito per convertire dal tipo enum a un tipo integrale.

+2

Credo di essermi perso quella piccola informazione succosa .. haha – Marlon

3

Oltre ai motivi tecnici, perché ... C'è un principio di design qui.

che specifica l'enumerazione poiché la memorizzazione di byte è un dettaglio di implementazione. Usare l'enumerazione è un problema diverso, non dovresti sapere o preoccuparti dei dettagli di implementazione.

Nel codice client, il fatto che si stia utilizzando un enumerazione significa che si intende effettivamente utilizzare un enum, non un byte o una lunghezza ecc. Altrimenti, perché non utilizzare semplicemente il tipo di dati che si intende.

Strongly type languaged come C# si sforza di rendere solo un po 'più difficile uscire dai tuoi "contratti" di codifica, questo di solito aiuta a rendere l'app design un po' migliore.

Ora, naturalmente, non sto dicendo che non ci sono momenti in cui devi essere coinvolto nei dettagli di implementazione, un buon esempio è un object relational mapper (ORM) in cui stai mappando un tipo di dati C# in un tipo di dati del database , le enumerazioni sono un buon esempio in cui devi conoscere il suo tipo di archiviazione per mapparlo. Ma in questi casi, il suo IMO è buono da esprimere o riflettere, è una buona bandiera nelle recensioni che qui stai specificamente oltre il solito uso.

Problemi correlati