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

将VB转换为C#help(?运算符),c#,vb.net,C#,Vb.net,如果能帮我把下面的VB代码转换成C#,我将不胜感激。到目前为止,代码转换器工作得很好,但这部分我遇到了麻烦,不知道如何解决 For Y As Integer = 0 To If(Flip, 1, 3) ... Next 起初我以为这会奏效: for (int Y = 0; (Y <= Convert.ToInt32(Flip)) ? 1 : 3; Y++) { ... } for(int Y=0;(Y您应该使用 (Flip ? 1 : 3) 相反。VB和C#中的都要

如果能帮我把下面的VB代码转换成C#,我将不胜感激。到目前为止,代码转换器工作得很好,但这部分我遇到了麻烦,不知道如何解决

For Y As Integer = 0 To If(Flip, 1, 3)
...
Next
起初我以为这会奏效:

for (int Y = 0; (Y <= Convert.ToInt32(Flip)) ? 1 : 3; Y++)
   {
   ...
   }
for(int Y=0;(Y您应该使用

(Flip ? 1 : 3)
相反。VB和C#中的都要求第一个操作数是布尔值。因此,在您的情况下,
Flip
必须已经是布尔值,在条件运算符中使用它时,您根本不需要将其转换为整数。

这应该有效(至少对我有效):

for(int Y=0;Y
Dim Y作为整数=0

而If((Y注意,在VB中,
For…Next
的边界只在循环开始之前计算一次。如果
翻转
在循环过程中可能发生变化,那么这可能解释了差异

为了重新迭代,C#相当于VB
For…Next
的代码如下(非常迂腐):

{
//y1是保留范围结束界限的隐藏变量/寄存器
int y1=Flip?1:3;//或其他-什么是Flip?这里是布尔值
//int y1=(翻转!=0)?1:3;//翻转为整数

对于(int Y=0;YWhy不起作用?翻转
的类型是什么,为什么要将其转换为int32
,以及会出现哪些编译器或运行时错误?如果翻转
发生变化,那么
的结果?
也会转换为变量。转换器建议使用
(int Y=0;围绕Flip?1:3的Y括号似乎已经解决了这个问题,如下所述。感谢大家!
(int Y=0;Y@the_lotus-非常正确,疯狂的是,C#在OP中没有出现任何接近正确的地方(转换器错误?人类绝望?)。如果Flip是布尔值,那么它真的是(Flip?1:3)正如其他人所说。如果Flip是整数,那么它可以是((Flip!=0)?1:3)。谢谢rskar,我认为括号解决了问题!
for(int Y=0;Y
(Flip ? 1 : 3)
for (int Y = 0; Y <= Flip ? 1 : 3; Y++) {
   // ....
}
Dim Y As Integer = 0
While If((Y <= Convert.ToInt32(Flip)), 1, 3)
  '.. Your Code
  Y += 1
End While
{
    // y1 is the hidden variable/register that retains the ending bound of the range
    int y1 = Flip ? 1 : 3; // Or whatever - what is Flip again? Here as Boolean
    // int y1 = (Flip != 0) ? 1 : 3; // Flip as Integer
    for(int Y=0; Y<=y1; Y++)
    {
        // ...
    } 
}