“检测到无法访问的代码”

时间:2011-01-17 19:40:05

标签: c#-4.0

static int Simple() {
    for (int v = 211; v < 661; v++) {
            return v;
    }
}

v ++中的'v'带有下划线,我的调试器表示检测到无法访问的代码。

6 个答案:

答案 0 :(得分:5)

因为它永远不会到达代码的那一部分。它将在for循环的第一次迭代时返回。请记住,这是在C#中执行for循环的顺序:

for (init; condition; increment) {
    body;
}
  1. 初始化
  2. 条件
  3. body(如果条件为真)
  4. 增量

答案 1 :(得分:4)

return语句将立即退出循环,v ++将无法执行。

答案 2 :(得分:2)

它永远无法进行增量,因为您在v循环的第一步之后返回for的值。

答案 3 :(得分:2)

你正在定义一个迭代超过450个值的for循环,但是你在循环的第一次迭代中返回(离开函数体,因此停止执行for循环!)。其他449个值将不会被迭代,因此代码无法访问。

答案 4 :(得分:2)

因为v在执行循环体后递增。但这告诉“嘿,不要再循环,离开!”,所以v永远不会增加。

答案 5 :(得分:2)

编译器会将您的循环转换为:

int v = 211;

loop:
if (v < 661)
{
    return v;
} else {
    v++;
    goto loop;
}