2010-04-16 14 views

Odpowiedz

12

Nie ma sensu, naprawdę, z wyjątkiem, że jeśli domyślny typ bazowy (int) nie jest dla ciebie za mało, tj. chcesz użyć wyższych wartości całkowitych niż wtedy, możesz to zrobić long. Może to być przydatne, gdy masz wyliczenie [Flags] z więcej niż 32 wartościami.

Można go ustawić jako byte lub short tylko w celu ograniczenia zakresu wartości, ale nadal będzie to trwało 4 bajty (tj. Tak samo jak int).

+3

Czy masz cytat z ostatniej części? – porges

+9

Dla pojedynczej zmiennej ostatnia część może być poprawna z powodu wypełnienia. Wierzę jednak, że jeśli masz duży zestaw wyliczeń z bazowym typem bajtów, będzie to wyglądało jak posiadanie 'byte []' zamiast 'int []'. –

+0

Tak, powiedział Jon Skeet. Ale kto do cholery używa zestawu wyrażeń? :) – EMP

3

Od enum (C# Reference)

typ bazowy określa ile pamięci jest przypisana do każdego wyliczający. Jednak do przeniesienia z typu wyliczeniowego na wymagany jest jawny odlew .

+2

Chyba przegapiłem tę soczystą małą informację ... haha – Marlon

3

Oprócz technicznych przyczyn, dla których ... Jest tu zasada projektowania.

określenie wyliczenia jako magazynu bajtów jest szczegółem implementacji. Używanie enum to inna kwestia, nie powinieneś wiedzieć ani dbać o szczegóły implementacji tego.

W kodzie klienta fakt, że używasz wyliczenia, powinien oznaczać, że w rzeczywistości chcesz użyć wyliczenia, a nie bajtu lub długiego itd. W przeciwnym razie nie używaj po prostu typu danych, który masz na myśli.

Zdecydowany typ języka, taki jak C#, sprawia, że ​​nieco trudniej jest wyjść poza kodowanie "umów", co zwykle pomaga w lepszym projektowaniu aplikacji.

Oczywiście nie mówię, że nie są czasy, że musisz się zaangażować w szczegóły implementacji, dobrym przykładem jest np. Obiektowy odwzoracz relacyjny (ORM), w którym mapujesz typ danych C# na typ danych bazy danych , wyliczenia są dobrym przykładem, gdzie musisz znać typ swojego magazynu, aby go zmapować. Ale w tych przypadkach, jego IMO jest dobre, aby rzucać lub odzwierciedlać, jest dobrą flagą w recenzjach, które tutaj specjalnie wychodzą poza zwykłe użycie.

Powiązane problemy