鉴于此代码:
List<string> things = new List<string>();
foreach (string thing in things)
{
string foo = thing.ToUpper();
}
string foo = String.Empty;
为什么编译器会抱怨foo被声明了两次?当然,在foreach循环中声明的实例仅在循环范围内有效吗?
答案 0 :(得分:5)
虽然你在声明它之后只能引用外部foo
,但是在函数的开头分配了本地,这意味着内部foo
会掩盖外部{{1}},即使它没有'尚未宣布。