我应该能够做到这一点。 “do while”执行指令并声明变量并在比较之后。
Random rnd = new Random();
do{
int number= rnd.Next();
} while (number != 0)
问题是范围,例如,我可以编译下一个代码:
Random rnd = new Random();
int number;
do{
number= rnd.Next();
} while (number != 0)
你的变量number
不存在于循环之外。
尝试
int number;
Random rnd = new Random()
do{
number= rnd.Next();
}while (number != 0)
这就是语言的工作方式 - 在do
块内声明的变量在该块之外是不可访问的(即使在while
子句中)。它与声明变量的“何时”无关(就执行代码的时间而言)。否则,这也是合法的:
do {
Random rnd = new Random();
int number= rnd.Next();
} while (number != 0)
Console.Writeline(number); // accessing number outside the loop
您必须在do范围之外声明数字,如下所示:
int number;
do{
Random rnd = new Random();
number= rnd.Next();
} while (number != 0)
打开和关闭花括号构成一个范围。您可以访问在该范围内的范围内声明的变量,而不是在它之外。在你的情况下,while循环在结束大括号之外,因此它超出了'do'的范围。这就是为什么你不能从while循环访问变量的原因。你必须先在do while循环之前声明变量。