不确定问题是否正确,但这是我想要完成的事情。
我正在运行一个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相关。
希望这是有道理的,感谢任何帮助。
提前致谢
答案 0 :(得分:6)
context1
是int
,因为您在这里指定了int
:
int currentField = field;
var context1 = currentField;
但稍后你要分配一个bool
,f.e:
context1 = currentField % 10 != 0;
!=
-operator会返回true
或false
,因此您无法将其分配给该变量。
所以只需将它变为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变量
所以最好先将true
或false
改为var context1 first
稍后如果您将bool函数分配给context1,则会发生强制转换错误
答案 4 :(得分:0)
表达式currentField % 10 != 0
会返回bool
。
您的context1
变量的类型为int
,因此您无法将该表达式分配给该变量。
我不确定您在此处尝试做什么,但请考虑在 if 语句中使用您的表达式:
if(currentField % 10 != 0)
{
curprogr = 1;
}
break;