为什么我不能在“do while”循环的主体中声明变量?

问题描述 投票:-2回答:4

我应该能够做到这一点。 “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)
c# .net while-loop do-while
4个回答
4
投票

你的变量number不存在于循环之外。

尝试

int number;
Random rnd = new Random()

do{
number= rnd.Next();

}while (number != 0)

2
投票

这就是语言的工作方式 - 在do块内声明的变量在该块之外是不可访问的(即使在while子句中)。它与声明变量的“何时”无关(就执行代码的时间而言)。否则,这也是合法的:

do {
    Random rnd = new Random();
    int number= rnd.Next();

} while (number != 0)

Console.Writeline(number);  // accessing number outside the loop

1
投票

您必须在do范围之外声明数字,如下所示:

int number;

do{

    Random rnd = new Random();
    number= rnd.Next();

} while (number != 0)

0
投票

打开和关闭花括号构成一个范围。您可以访问在该范围内的范围内声明的变量,而不是在它之外。在你的情况下,while循环在结束大括号之外,因此它超出了'do'的范围。这就是为什么你不能从while循环访问变量的原因。你必须先在do while循环之前声明变量。

© www.soinside.com 2019 - 2024. All rights reserved.