2016-07-31 15 views
0

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

+1

'|' ist bitweises ODER, keine Subtraktion. Sie * fügen * die rechte Wand hinzu und entfernen sie nicht. – Luaan

+0

Ich denke, ein Teil Ihres Fehlers ist Ihre Enum fehlt '[Flags]' –

+0

@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

Antwort

0
wallsWithRightWallRemoved = walls & 0x0111; 

Oder werden Bits, die entweder sind. Und setzt Bits, die in beiden 0 sind, aufheben, was Sie tun möchten.

Verwandte Themen