我应该能够做到这一点。 “ 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)
答案 0 :(得分:4)
您的变量number
在循环之外不存在。
尝试
int number;
Random rnd = new Random()
do{
number= rnd.Next();
}while (number != 0)
答案 1 :(得分:2)
这就是语言的工作方式-在do
块中声明的变量在该块之外(即使在while
子句中也无法访问)。它与“何时”声明变量(就何时执行代码而言)无关。否则,这也是合法的:
do {
Random rnd = new Random();
int number= rnd.Next();
} while (number != 0)
Console.Writeline(number); // accessing number outside the loop
答案 2 :(得分:1)
您必须像这样在do范围之外声明数字:
int number;
do{
Random rnd = new Random();
number= rnd.Next();
} while (number != 0)
答案 3 :(得分:0)
大括号和大括号构成一个范围。您可以访问在该范围内声明的变量,该变量不在该范围之内。 在您的情况下,while循环位于大括号内,因此不在'do'的范围内。这就是为什么您不能从while循环访问变量的原因。您必须在do while循环之前先声明变量