Warum werden Flag-Enums normalerweise mit Hexadezimalwerten definiert?

Viele Male, die ich finden-flag-enum-Deklarationen, die Verwendung von hexadezimalen Werten. Zum Beispiel:

[Flags]
public enum MyEnum
{
    None  = 0x0,
    Flag1 = 0x1,
    Flag2 = 0x2,
    Flag3 = 0x4,
    Flag4 = 0x8,
    Flag5 = 0x10
}

Wenn ich das deklarieren einer Enumeration, die ich normalerweise erklären es so:

[Flags]
public enum MyEnum
{
    None  = 0,
    Flag1 = 1,
    Flag2 = 2,
    Flag3 = 4,
    Flag4 = 8,
    Flag5 = 16
}

Gibt es einen Grund oder Gründe, warum manche Menschen wählen, um Schreibe den Wert in hexadezimal statt dezimal? So wie ich das sehe, ist es leichter zu bekommen verwirrt, wenn Sie mit hex-Werten und versehentlich schreiben Flag5 = 0x16 statt Flag5 = 0x10.

Kommentar zu dem Problem
Was würde es weniger wahrscheinlich, dass Sie werde schreiben 10 statt 0x10, wenn Sie Dezimalzahlen? Zumal sind diese binäre zahlen, die wir zu tun haben, und hex ist trivial Cabrio zum/vom binäre? 0x111 ist weit weniger nervig zu übersetzen im Kopf als 273... Kommentarautor: cHao
Es ist eine Schande, dass C# nicht haben eine syntax, die nicht ausdrücklich verlangen, schreiben die Potenzen von zwei. Kommentarautor: Colonel Panic
Du tust etwas unsinnig hier. Die Absicht hinter Fahnen, dass Sie bitweise kombiniert. Aber die bitweise Kombinationen sind nicht Elemente des Typs. Der Wert Flag1 | Flag2 ist 3 und 3 nicht entsprechen Domänen-Wert von MyEnum. Kommentarautor: Kaz
Wo siehst du das? mit Reflektor? Kommentarautor: giammin
@giammin Es ist eine Allgemeine Frage, nicht um eine bestimmte Implementierung. Sie können nehmen, open-source-Projekte oder einfach nur code auf dem Netz zum Beispiel. Kommentarautor: Adi Lester

InformationsquelleAutor der Frage Adi Lester | 2012-11-04

Schreibe einen Kommentar