我有以下C#代码:
byte rule = 0;
...
rule = rule | 0x80;
Run Code Online (Sandbox Code Playgroud)
产生错误:
无法将类型'int'隐式转换为'byte'.存在显式转换(您是否错过了演员?)
[更新:问题的第一个版本错了......我误读了编译器输出]
添加强制转换并不能解决问题:
rule = rule | (byte) 0x80;
Run Code Online (Sandbox Code Playgroud)
我需要把它写成:
rule |= 0x80;
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪.为什么|=操作员与操作员有什么不同|?
有没有其他方法告诉编译器将常量视为一个字节?
@ Giovanni Galbo:是的,不是.该代码处理外部设备中闪存的编程,逻辑上代表单个字节的存储器.我可以稍后施展,但这似乎更明显.我想我的C传承太多了!
@ Jonathon Holland:'as'语法看起来更整洁但不幸的是看起来不起作用......它产生:
as运算符必须与引用类型或可空类型一起使用('byte'是不可为空的值类型)