似乎没有办法在两个字节上使用C#的三元运算符,如下所示:
byte someByte = someBoolean ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)
该代码当前无法使用"无法将源类型'int'转换为目标类型'byte'"进行编译,因为编译器将这些数字视为整数.显然没有指定的后缀表示0和1是字节,所以唯一的解决方法是(a)将结果转换为字节或(b)使用if-else控件.
有什么想法吗?
Luc*_*ero 19
byte someByte = someBoolean ? (byte)0 : (byte)1;
Run Code Online (Sandbox Code Playgroud)
演员阵容在这里不是问题,事实上,IL代码根本不应该有演员阵容.
编辑: 生成的IL看起来像这样:
L_0010: ldloc.0 // load the boolean variable to be checked on the stack
L_0011: brtrue.s L_0016 // branch if true to offset 16
L_0013: ldc.i4.1 // when false: load a constant 1
L_0014: br.s L_0017 // goto offset 17
L_0016: ldc.i4.0 // when true: load a constant 0
L_0017: stloc.1 // store the result in the byte variable
Run Code Online (Sandbox Code Playgroud)
你可以随时做:
var myByte = Convert.ToByte(myBool);
Run Code Online (Sandbox Code Playgroud)
这将产生myByte == 0表示false,myByte == 1表示true.
| 归档时间: |
|
| 查看次数: |
1561 次 |
| 最近记录: |