C# 在while循环中为bool赋值
我知道这是一个非常新的C#问题,但我正在实施一个小程序,它可以实现以下功能:C# 在while循环中为bool赋值,c#,C#,我知道这是一个非常新的C#问题,但我正在实施一个小程序,它可以实现以下功能: namespace ConsoleApplication { class Program { static void Main(string[] args) { bool isRun = false; int number = 0; while (isRun = (true) && number < 3
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
bool isRun = false;
int number = 0;
while (isRun = (true) && number < 3)
{
++number;
Console.WriteLine("Number = {0}", number.ToString());
Console.WriteLine();
}
Console.WriteLine(isRun.ToString());
Console.ReadLine();
}
}
}
您看到此行为的原因是由于所涉及的运算符优先级。这里的
&&
绑定比=
更强,因此循环中的代码实际上绑定如下
while (isRun = (true && number < 3)) {
...
}
注意:一般来说,正如@Servey所指出的,将局部变量赋值给循环谓词内的表达式被认为是不好的做法。实际上,许多C#用户会对代码的编译感到惊讶,因为他们已经习惯于只在循环中使用=
对于这种模式,在循环的第一行简单地将isRun
设置为true
while (number < 3) {
isRun = true;
...
}
while(数字<3){
isRun=true;
...
}
问题在于,您已将布尔
变量设置为假
,而没有将其重新分配回真
,在while循环中,您正在将它与值真
进行匹配,因此,它在每种情况下都会失败。哇,补充代码改变了问题……值得一提的是,在这样的条件表达式中引起副作用通常是不好的做法。变异效应应该在循环内部,条件应该没有副作用。他将其赋值为true,而不是将其与true进行比较。它是=
而不是=
。
while ((isRun = (true)) && number < 3) {
...
}
while (number < 3) {
isRun = true;
...
}