C# 从变量更改if语句

C# 从变量更改if语句,c#,if-statement,for-loop,while-loop,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;

我不确定这个问题是否正确,但以下是我试图实现的目标

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

for(int i=0;i这里您分配了
var context1=currentField;
在case语句中,您试图分配布尔值,所以它是错误的

见案例0:

context1 = currentField % 10 != 0;

这里您分配
var context1=currentField;
,在case语句中,您试图分配布尔值,所以它是错误的

见案例0:

context1 = currentField % 10 != 0;
<>代码> var CordExt1= CurrnField:/VaR将考虑为int,因为您将int变量赋值给它 因此,最好先将
true
false
分配给var context1

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

<>代码> var CordExt1= CurrnField:/VaR将考虑为int,因为您将int变量赋值给它 因此,最好先将
true
false
分配给var context1


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

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

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

我不确定你在这里想做什么,但是考虑使用你的表达式在<强> I/St>语句:

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

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

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

我不确定你在这里想做什么,但是考虑使用你的表达式在<强> I/St>语句:

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

context1
是一个
int
,因为您在这里为它添加了
int

int currentField = field;
var context1 = currentField;
但稍后您将在此处分配一个
bool
,f.e:

context1 = currentField % 10 != 0;
返回
true
false
,因此不能将其分配给该变量

因此,只需将其设为布尔变量:

bool context1 = false;  
我还认为您实际上希望使用
if
而不是
while
-循环

所以把它改成

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

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

context1
是一个
int
,因为你在这里有一个
int
的辅助:

int currentField = field;
var context1 = currentField;
但稍后您将在此处分配一个
bool
,f.e:

context1 = currentField % 10 != 0;
返回
true
false
,因此不能将其分配给该变量

因此,只需将其设为布尔变量:

bool context1 = false;  
我还认为您实际上希望使用
if
而不是
while
-循环

所以把它改成

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


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

你可以使用类似谓词的委托函数来实现这个功能。HTH

你可以使用类似谓词的委托函数来实现这个功能Endosial.Hth.

UR首先将int变量Currand字段赋值给上下文,因此它将VAR变量视为int。稍后你尝试对BoL函数CONTEXT1进行排序。这就是为什么这个错误是什么?如果你是“否则”条件,你希望你的<代码> < < /C> >条件是什么,因为数字不是真的还是假的。(除非您实际指定了比较)这是因为您正在尝试分配
当前字段%10!=0
(bool)到
context1
,它是int。并且没有为它定义隐式/显式强制转换。你在问一个关于
if1的问题,但是你有一个
while`循环。各种答案都在评论
int
vs
bool
,但是你预计
while
循环中会发生什么?上下文会改变吗?应该改变吗当?> UR首先将int变量Currrnfield分配给上下文时,它将VAR变量视为int。稍后您尝试对布尔函数CONTEXT1进行排序。这就是为什么这个错误是什么?什么是UR IF条件?当/<代码>条件时,你希望你的<代码>什么,因为数字不是真的还是假的。(除非您实际指定了比较)这是因为您正在尝试分配
当前字段%10!=0
(bool)到
context1
,它是int。并且没有为它定义隐式/显式强制转换。你在问一个关于
if1的问题,但是你有一个
while`循环。各种答案都在评论
int
vs
bool
,但是你预计
while
循环中会发生什么?上下文会改变吗?应该改变吗成为
while
?啊,由于树的原因,没有看到林:-)谢谢Tim。有意义的变量名和指定类型而不是使用
var
有助于避免这些问题;)如何可能以
while(true)结束
help here?您正在解释为什么代码无法编译,但不是在更基本的层面上解释代码的潜在错误。@DavidArno:您是对的:我已经相应地编辑了我的答案。循环没有意义。啊,由于树的:-),没有看到林感谢Tim。有意义的变量名和指定类型,而不是使用
var
有助于避免这些问题;)在这里,
while(true)
有什么帮助?您正在解释代码无法编译的原因,但不是从更基本的层面解释代码的潜在错误。@DavidArno:您是对的:我已经相应地编辑了我的答案。循环没有意义。