![](/img/trans.png)
[英]Do-While Loops but the values for the while statement is inside the Do Statement
[英]How are the do-while loops compiled?
这些问题比标题实际上要具体得多。 我只是在经历一些C#,却遇到了一个我设法解决的错误,但我不知道为什么。
当在循环中定义字符串电源时,为什么do-while循环会给我一个错误?
当我在do-whiel循环之前定义我的弦功率时,一切都很好
String power;
do
{
Console.WriteLine("Enter values X & Y for X+Y");
Console.WriteLine("Your value of X is ");
int numOne = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" Your value of Y is ");
int numTwo = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Your Sum is {0}", numOne+numTwo);
Console.Write("Turn calculator on or off? ");
power = Console.ReadLine();
} while (power == "on" || power =="On" || power =="ON");
}
}
}
最终运行正常。
但是下面的示例在while语句中导致有关当前上下文中不存在的名称“ power”的错误。
do
{
Console.WriteLine("Enter values X & Y for X+Y");
Console.WriteLine("Your value of X is ");
int numOne = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" Your value of Y is ");
int numTwo = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Your Sum is {0}", numOne+numTwo);
Console.Write("Turn calculator on or off? ");
String power;
power = Console.ReadLine();
} while (power == "on" || power =="On" || power =="ON");
}
}
{ .......... }
创建范围。 在循环内部定义比在while (power...)
部分更深的范围。
基本上,您可以看到嵌套深度较小的范围( if
的范围可以看到方法的范围,方法的范围可以看到类的范围,类可以看到的名称空间范围,等等。
有关范围界定的更多信息,请参见此处 。
另一个例子:
public void A()
{
string power = "test";
{
// this works because power is defined in a less deep scope.
Console.WriteLine(power);
}
}
public void B()
{
{
string power = "test";
}
// this doesn't work because power is defined in a deeper scope
Console.WriteLine(power);
}
错误消息所指的“上下文”是:当前作用域及其上方的所有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.