gpt4 book ai didi

c# - 为什么我不能对字节执行 bool 逻辑?

转载 作者:太空狗 更新时间:2023-10-29 21:07:34 26 4
gpt4 key购买 nike

在 C# (3.5) 中,我尝试以下操作:

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

我收到错误 132:“无法将类型‘int’隐式转换为‘byte’。存在显式转换(是否缺少强制转换?)”。同样的情况发生在 |和^。

我做错了什么?为什么它问我有关整数的问题?为什么我不能对字节执行 bool 逻辑?

最佳答案

未为 byte 声明各种运算符 - 两个操作数都提升为 int,结果为 int。例如,加法:

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

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

byte1 += byte2;

有一个recent SO question on this .我同意这对于按位运算尤其令人厌烦,因为按位运算的结果应该始终是相同的大小,而且这在逻辑上是完全有效的运算。

作为解决方法,您可以将结果转换回字节:

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

关于c# - 为什么我不能对字节执行 bool 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1011682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com