Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符上的C位运算符_C#_Char_Bit Manipulation - Fatal编程技术网

C# 字符上的C位运算符

C# 字符上的C位运算符,c#,char,bit-manipulation,C#,Char,Bit Manipulation,我有一些旧的C代码正在转换成C。有很多像这样的位运算符 const unsigned char N = 0x10; char C; ..... if (C & N) { ..... } 这在C中的等价物是什么?例如,第一行在C中无效,因为编译器说没有从int到char的转换。Nor在C中不是有效的运算符 const char N = (char)0x10; 或 及 但请注意,C中的char是1字节,C中是2字节,所以也许您应该使用byte 但您可能希望使用标志,因此可以使用枚举

我有一些旧的C代码正在转换成C。有很多像这样的位运算符

const unsigned char N = 0x10;
char C;
.....
if (C & N)
{
   .....
}
这在C中的等价物是什么?例如,第一行在C中无效,因为编译器说没有从int到char的转换。Nor在C中不是有效的运算符

const char N = (char)0x10;

但请注意,C中的char是1字节,C中是2字节,所以也许您应该使用byte

但您可能希望使用标志,因此可以使用枚举:

注意,这是在C4.0中引入的

但请注意,C中的char是1字节,C中是2字节,所以也许您应该使用byte

但您可能希望使用标志,因此可以使用枚举:


请注意,这是在C4.0中引入的,谢谢。我喜欢标志选项,因为它更可读。谢谢你。我喜欢Flag选项,因为它更具可读性。
const char N = '\x10';
if ((C & N) != 0) // Be aware the != has precedence on &, so you need ()
{
}
const byte N = 0x10;
[Flags]
enum MyEnum : byte
{
    N = 0x10
}

MyEnum C;

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