从变量更改 if 语句

Change if statement from variable

不确定问题是否正确,但这是我正在努力完成的。

我是 运行 一个 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... //
    }
}

我收到此错误:无法在关于上下文 1 的每个开关盒中隐式转换类型 bool' toint'。

希望这是有道理的,我们将不胜感激。

提前致谢

在这里你赋值 var context1=currentField; 并且如果声明你试图赋值布尔值所以它是错误的。

见案例0:

context1 = currentField % 10 != 0;
int currentField = field;

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

稍后如果您将 bool 函数赋值给 context1 从而发生强制转换错误

表达式currentField % 10 != 0returns一个bool.

您的 context1 变量属于 int 类型,因此您不能将该表达式分配给该变量。

我不确定你想在这里做什么,但考虑在 if 语句中使用你的表达式:

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

context1 是一个 int,因为你在这里分配了一个 int

int currentField = field;
var context1 = currentField;

但稍后您要在此处分配 bool、f.e:

context1 = currentField % 10 != 0;

!=-operator returns 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 循环中的条件,这使其成为无限循环。

你可以使用像Predicate这样的委托函数来实现这个功能。 HTH