我已经使用C#很长一段时间了,但我从来没有意识到以下几点:
public static void Main()
{
for (int i = 0; i < 5; i++)
{
}
int i = 4; //cannot declare as 'i' is declared in child scope
int A = i; //cannot assign as 'i' does not exist in this context
}
那么为什么我不能在for块之外使用'i‘的值,如果它不允许我用这个名称声明一个变量呢?
我认为for循环使用的迭代器变量只在其作用域内有效。
发布于 2011-11-03 20:58:01
有一种方法可以在循环后在方法中声明和使用i
:
static void Main()
{
for (int i = 0; i < 5; i++)
{
}
{
int i = 4;
int A = i;
}
}
你可以在Java中做到这一点(它可能起源于C,我不确定)。当然,由于变量名的缘故,它有点凌乱。
发布于 2011-11-03 17:11:51
考虑这一点的最简单方法是将i的外部声明移到循环之上。到那时,它应该变得显而易见了。
这两种方法的作用域都是相同的,因此不能这样做。
发布于 2011-11-03 17:13:18
而且,C#的规则在很多时候并不是严格编程所必需的,但它们的存在是为了保持代码的整洁和可读性。
例如,他们可以这样做,如果你在循环之后定义它,那么它是可以的,然而,阅读你的代码并错过定义行的人可能会认为它与循环的变量有关。
https://stackoverflow.com/questions/7992332
复制相似问题