2011-10-27 46 views
1

我有一些舊的C代碼正在轉換爲C#。有很多像這樣的按位運算符:C#按位運算符在字符上

const unsigned char N = 0x10; 
char C; 
..... 
if (C & N) 
{ 
    ..... 
} 

在C#中相當於什麼?例如,第一行在C#中無效,因爲編譯器說沒有從int到char的轉換。在C#中也沒有簽名有效的運算符。

回答

8
const char N = (char)0x10; 

const char N = '\x10'; 

if ((C & N) != 0) // Be aware the != has precedence on &, so you need() 
{ 
} 

但要知道,char在C爲1個字節,在C#這是2個字節,因此,或許你應該使用byte

const byte N = 0x10; 

但也許你想使用的標誌,因此您可以使用enum

[Flags] 
enum MyEnum : byte 
{ 
    N = 0x10 
} 

MyEnum C; 

if (C.HasFlag(MyEnum.N)) 
{ 
} 

(注意:Enum.HasFlag年推出的C#4.0)

+0

感謝您的。我喜歡Flag選項,因爲它更具可讀性。 – Jonnster