加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么我不能在字节上做布尔逻辑?

发布时间:2020-12-15 04:32:45 所属栏目:百科 来源:网络整理
导读:在C#(3.5)中,我尝试以下方法: byte byte1 = 0x00;byte byte2 = 0x00;byte byte3 = byte1 byte2; 我得到错误132:“不能隐式地将类型’int’转换为’byte’.存在显式转换(你是否错过了演员?)”. |也是如此和^. 我究竟做错了什么?为什么要问我关于整数?为
在C#(3.5)中,我尝试以下方法:
byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 & byte2;

我得到错误132:“不能隐式地将类型’int’转换为’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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读