为什么 foreach 循环内的局部变量与循环外声明的变量冲突

本文关键字:循环 声明 冲突 变量 局部变量 foreach 为什么 | 更新日期: 2023-09-27 18:28:42

给定此代码:

List<string> things = new List<string>();
foreach (string thing in things)
{
    string foo = thing.ToUpper();
}
string foo = String.Empty;

为什么编译器抱怨 foo 被声明了两次?当然,在foreach循环中声明的实例仅在循环范围内有效吗?

为什么 foreach 循环内的局部变量与循环外声明的变量冲突

虽然您只能在声明后引用外部foo,但局部变量是在函数的开头分配的,这意味着内部foo将掩盖外部,即使它尚未声明。