从变量更改if语句

时间:2015-06-03 11:41:39

标签: c# if-statement for-loop while-loop

不确定问题是否正确,但这是我想要完成的事情。

我正在运行一个for循环,我希望在每个循环中更改if语句。

以下是示例:

for(int i=0;i<3;i++){

    int currentField = field;

    var context1=currentField;
    int curprogr=0;

    switch (i){
    case 0:
        context1 = currentField % 10 != 0;
        curprogr = 1;
        break;
    case 1:
        context1 = Mathf.Floor(currentField/10) != 0;
        curprogr = 10;
        break;
    case 2:
        context1 = currentField % 10 != 0 && Mathf.Floor(currentField/10) != 0;
        curprogr = 11;
        break;
    }

    while(context1){ // Here is where I want it to chnage for each time the loop runs through //
        // Some logic here... //
    }
}

我收到此错误:无法在每个switchcase中隐式转换类型bool' to int'与context1相关。

希望这是有道理的,感谢任何帮助。

提前致谢

5 个答案:

答案 0 :(得分:6)

context1int,因为您在这里指定了int

int currentField = field;
var context1 = currentField;

但稍后你要分配一个bool,f.e:

context1 = currentField % 10 != 0;

!=-operator会返回truefalse,因此您无法将其分配给该变量。

所以只需将它变为bool变量:

bool context1 = false;  

我还认为你实际上想要使用if而不是while - 循环。

所以将其改为

if(context1)
{ 
    // Here is where I want it to change for each time the loop runs through //
}

为什么我这么想?因为你在标题中提到if,似乎你不想改变while - 循环中的条件,这使得它成为无限循环。

答案 1 :(得分:1)

您可以使用像Predicate这样的委托功能来实现此功能。 HTH

答案 2 :(得分:0)

在这里你指定var context1=currentField;,如果是Statement,你试图分配布尔值,这样就错了。

见案例0:

context1 = currentField % 10 != 0;

答案 3 :(得分:0)

int currentField = field;

var context1=currentField; // var将被视为int,因为您正在为其分配int变量 所以最好先将truefalse改为var context1 first

稍后如果您将bool函数分配给context1,则会发生强制转换错误

答案 4 :(得分:0)

表达式currentField % 10 != 0会返回bool

您的context1变量的类型为int,因此您无法将该表达式分配给该变量。

我不确定您在此处尝试做什么,但请考虑在 if 语句中使用您的表达式:

if(currentField % 10 != 0)
{
     curprogr = 1;
}
break;