Abgesehen von den technischen Gründen ... Es gibt hier ein Designprinzip.
die Angabe der Enumeration mit Byte-Speicher ist ein Implementierungsdetail. Die Verwendung der Enumeration ist ein anderes Thema, Sie sollten die Implementierungsdetails davon nicht kennen oder interessieren.
In Client-Code sollte die Tatsache, dass Sie eine Enumeration verwenden, bedeuten, dass Sie in der Tat eine Enumeration, kein Byte oder lange usw. verwenden möchten. Andernfalls verwenden Sie einfach den Datentyp, den Sie meinen.
Stark typensprache wie C# bemühen sich, es ein wenig schwieriger zu machen außerhalb Ihrer Codierung "Verträge" dies in der Regel hilft App-Design nur ein bisschen besser machen.
Jetzt sage ich natürlich nicht, dass es keine Zeiten gibt, in denen Sie an Implementierungsdetails beteiligt werden müssen. Ein gutes Beispiel ist ein object relational mapper (ORM), bei dem Sie einen C# -Datentyp einem Datenbank-Datentyp zuordnen Enums sind ein gutes Beispiel, bei dem Sie den Speichertyp kennen müssen, um ihn zuzuordnen. Aber in diesen Fällen, seine IMO gut zu werfen oder zu reflektieren, ist es eine gute Flagge in Bewertungen, dass Sie hier speziell außerhalb der üblichen Verwendung treten.
Haben Sie ein Zitat für diesen letzten Teil? – porges
Für eine einzelne Variable kann der letzte Teil aufgrund von Padding korrekt sein. Ich glaube jedoch, wenn Sie ein großes Array eines Enums mit einem zugrunde liegenden Byte-Typ haben, ist das so, als hätte man ein Byte [] 'anstelle eines' int [] '. –
Ja, was Jon Skeet gesagt hat. Aber wer zum Teufel benutzt eine Reihe von Enums? :) – EMP