2016-07-31 56 views
0

我有以下代碼:如何從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  
} 

我有一個可變稱爲壁其中0x1111表示4-布爾值基本相符。從牆上我想刪除右牆,所以我減去它(牆| Wall.Right;),但我得到「不能應用運算符& int類型的操作數」。 基本上我想結束一個包含0x0111的變量。

謝謝

+1

'|'是按位或是,而不是減法。您正在*添加*右側牆,而不是刪除它。 – Luaan

+0

我認爲你的錯誤的一部分是你的枚舉是缺少'[標誌]' –

+0

@Scott ['[標誌]'不改變枚舉的實現,它僅用於顯示目的](http://stackoverflow.com/questions)/8447 /什麼,做最標誌 - 枚舉屬性均在-C)。 :) – CodeCaster

回答

0
wallsWithRightWallRemoved = walls & 0x0111; 

或者將設置在任何位。並且將取消設置爲0的位,這就是你想要做的。