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