在C#(3.5)中,我尝试以下方法:

byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 & byte2;

我得到错误132:“不能隐式地将类型'int'转换为'byte'。存在显式转换(您是否错过了演员表?)“。 |也是如此和^。

我做错了什么?为什么要问我关于整数?为什么我不能在字节上做布尔逻辑?

有帮助吗?

解决方案

没有为 byte 声明各种运算符 - 两个操作数都被提升为 int ,结果是 int 。例如,添加:

byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 + byte2; // Compilation error

请注意,复合赋值确实有效:

byte1 += byte2;

最近的SO问题。我同意这对于按位操作特别令人厌烦,但结果应始终是相同的大小,并且它在逻辑上完全有效。

作为一种解决方法,您可以将结果转换回byte:

byte byte3 = (byte) (byte1 & byte2);

其他提示

因为字节(和短)类型不实现那些运算符

参见规范:4.1.5

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top