这是反编译器把它弄成了while循环,而不是编译器。
编译器就是转换为跳转指令而已。IL层面没有循环语句这一说。
;代表语句结束,这里是一句空语句,编译器不会为它产生任何代码,所以
;
;;
;;;
...
都是一样的
for循环本身就是和while等价的。
for (a;b;c) d;
也可以写成
a;
while (b) { d; c; }
但是反编译工具稍微有些智能,它会猜测你的源代码是写的for还是while
但是如果你写 for (;;),这个它就猜错了。
类似的,你写
int i = 0;
while (i < 10)
i++;
这个它也会猜错,猜成
for (int i = 0; i < 10; i++);