char上的位操作符
本文关键字:操作符 位操作 char | 更新日期: 2023-09-27 18:12:28
我有一些旧的C代码正在转换为c#。有很多位操作符,比如
const unsigned char N = 0x10;
char C;
.....
if (C & N)
{
.....
}
在c#中等价的是什么?例如,第一行在c#中是无效的,因为编译器说没有从int到char的转换。
const char N = (char)0x10;
或
const char N = ''x10';
和
if ((C & N) != 0) // Be aware the != has precedence on &, so you need ()
{
}
但是要注意,C中的char
是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中被引入)