从变量更改 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' to
int'。
希望这是有道理的,我们将不胜感激。
提前致谢
在这里你赋值 var context1=currentField;
并且如果声明你试图赋值布尔值所以它是错误的。
见案例0:
context1 = currentField % 10 != 0;
int currentField = field;
var context1=currentField;
//var 将被视为 int,因为您正在为其分配 int 变量
所以最好首先将 true
或 false
分配给 var context1
稍后如果您将 bool 函数赋值给 context1 从而发生强制转换错误
表达式currentField % 10 != 0
returns一个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 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
循环中的条件,这使其成为无限循环。
你可以使用像Predicate这样的委托函数来实现这个功能。 HTH
不确定问题是否正确,但这是我正在努力完成的。
我是 运行 一个 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' to
int'。
希望这是有道理的,我们将不胜感激。
提前致谢
在这里你赋值 var context1=currentField;
并且如果声明你试图赋值布尔值所以它是错误的。
见案例0:
context1 = currentField % 10 != 0;
int currentField = field;
var context1=currentField;
//var 将被视为 int,因为您正在为其分配 int 变量
所以最好首先将 true
或 false
分配给 var context1
稍后如果您将 bool 函数赋值给 context1 从而发生强制转换错误
表达式currentField % 10 != 0
returns一个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 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
循环中的条件,这使其成为无限循环。
你可以使用像Predicate这样的委托函数来实现这个功能。 HTH