Ich habe den folgenden Code:Wie entferne ich ein Bit von einem int?
private enum Wall
{
Up = 0x0001,
Down = 0x0010,
Left = 0x0100,
Right = 0x1000,
}
private void Test()
{
int walls = 0x1111;
var wallsWithRightWallRemoved = walls | Wall.Right;
// wallsWithRightWallRemoved should now be this: 0x0111
}
ich eine Variable namens Wände haben, wo die 0x1111 grundsätzlich 4 booleans darstellt. Von den Wänden möchte ich die rechte Wand entfernen, also subtrahiere ich sie davon (Wände | Wall.Right;), aber ich bekomme "Kann den Operator & nicht auf Operanden vom Typ int anwenden". Grundsätzlich möchte ich mit einer Variablen enden, die 0x0111 enthält.
Danke
'|' ist bitweises ODER, keine Subtraktion. Sie * fügen * die rechte Wand hinzu und entfernen sie nicht. – Luaan
Ich denke, ein Teil Ihres Fehlers ist Ihre Enum fehlt '[Flags]' –
@Scott ['[Flags]' ändert sich nicht eine Enum-Implementierung, es ist nur für Anzeigezwecke] (http://stackoverflow.com/questions/8447/what-does-the-flags-enum-Attribut-mean-in-c). :) – CodeCaster