小编Cor*_*ius的帖子

将VB转换为C#help(?运算符)

我很感激将以下VB代码转换为C#的一些帮助.代码转换器到目前为止工作正常,但是这部分我碰到了一个砖墙,我不知道如何解决它.

For Y As Integer = 0 To If(Flip, 1, 3)
...
Next
Run Code Online (Sandbox Code Playgroud)

我认为这最初会起作用:

for (int Y = 0; (Y <= Convert.ToInt32(Flip)) ? 1 : 3; Y++)
   {
   ...
   }
Run Code Online (Sandbox Code Playgroud)

但唉它没有.也许我只是不知所措,但我不知道如何继续这里.

谢谢你的任何建议!

编辑:

翻转是一个布尔值.转换器建议

for (int Y = 0; Y <= Flip ? 1 : 3; Y++)
Run Code Online (Sandbox Code Playgroud)

导致Operator <=的结果不能应用于int和bool类型的操作数.因此我试图转换的原因.然而,转换导致无法隐式地将int转换为bool或反过来.

解:

Flip周围的支架?1:3似乎解决了这个问题.所以转换似乎是正确的,除了一个小细节.

for (int Y = 0; Y <= (Flip ? 1 : 3); Y++)

谢谢大家!

c# vb.net

3
推荐指数
1
解决办法
133
查看次数

错误的位移结果

我第一次使用bitshift,我遇到了意想不到的结果.

我正在宣布转移金额如下:

byte p_size = 0;
if (ver == 0x12 || ver == 0x13)
    p_size = 20;
else
    p_size = 40;
Run Code Online (Sandbox Code Playgroud)

要移位的值声明为

int t_size = rinput.ReadInt32();
Run Code Online (Sandbox Code Playgroud)

最后我用来转移的代码:

int temp = t_size >> p_size << p_size;
Run Code Online (Sandbox Code Playgroud)

假设t_size = 0x2000385E和p_size = 20. temp = 0x20000000.

现在,如果t_size = 0x40001014和p_size = 40,则temp = 0x40001000而不是0x40000000.我使用按位计算器"手动"计算它,它匹配0x40000000的预期结果.

这可能是对我的愚蠢疏忽,但我不明白什么会导致p_size = 40的奇怪结果...任何建议表示赞赏!

c# bit-shift

2
推荐指数
2
解决办法
419
查看次数

标签 统计

c# ×2

bit-shift ×1

vb.net ×1