Angenommen, Sie haben die folgende Enumeration, die Flags enthält.Bitweise Operationen auf Enum Flag
[Flags]
public enum MyFlag
{
None = 0,
Foo = 1 << 0,
Bar = 1 << 1,
Baz = 1 << 2,
Quuz = 1 << 3
}
Und Sie instanziiert eine neue und alte:
var newF = MyFlag.Foo | MyFlaq.Quuz; // 1001
var oldF = MyFlag.Foo | MyFlag.Baz; // 0101
Meine erste Frage: Wie eine bitweise Operation auf neue und alte auszuführen, die XOR-Flag zu bekommen?
Dann eine zusätzliche Frage: Wie verwendet man diese XOR-Flags, um hinzugefügte und entfernte Flags zu berechnen?
MyFlag added = ????? // Do something with new and xor -> should result in : 1000
MyFlag removed = ????? // Do same thing with old and xor -> should result in: 0100
Dies manuell auf einem Blatt Papier zu tun ist super einfach.
Es sollte eine gewisse Art von bitweise Operation für dieses Recht zur Verfügung stehen? Bitte zeigen Sie mir die Antwort und ich werde es zu meinem Skillset hinzufügen! :-)
Die Antworten sind:
var xor = newF^oldF;
var added = newF & xor;
var removed = oldF & xor;
Warum nicht y Oder googeln Sie einfach nach "C# bitwise operators"? –
'^': z.B. 'var xor = @new^old;' Bitte beachten Sie, da 'new' ein Schlüsselwort in C# ist, sollte es als' @ new' gesetzt werden, wenn ein Name verwendet wird. –
SO ist kein Format, um diese Art von Fragen zu stellen. look it up in [Dokumentation] (https://msdn.microsoft.com/en-us/library/17zwb64t.aspx) – dlatikay