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

时间:2019-03-18 14:14:09

标签: c# .net while-loop do-while

我应该能够做到这一点。 “ 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)

4 个答案:

答案 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循环之前先声明变量