相关疑难解决方法(0)

C#数字常量

我有以下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'是不可为空的值类型)

c# casting

19
推荐指数
4
解决办法
1万
查看次数

标签 统计

c# ×1

casting ×1