是否可以使用外部声明的变量进行foreach

Nay*_*iya 0 c# foreach

通常对于每次写这样的

List<int> intList = new List<int>();
foreach(int a in intList)
{
  if(a > 5){
     break;
  }
}
Run Code Online (Sandbox Code Playgroud)

有可能做这样的事情

List<int> intList = new List<int>();
int a=0;
foreach(a in intList)
{
  if(a > 5){
     break;
  }
}
//do something to **a** here
Run Code Online (Sandbox Code Playgroud)

Mar*_*zek 6

不,这是不可能的.遵循C#规范,这是foreach循环语法:

foreach-statement:
foreach   (   local-variable-type   identifier   in   expression   )
    embedded-statement
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这local-variable-type是语法的一部分,因此在代码中需要使其成为正确的C#代码.

您应该使用LINQ并FirstOrDefault以更清晰的方式获得类似的行为:

List<int> intList = new List<int>();
int a = intList.FirstOrDefault(x => x > 5)
Run Code Online (Sandbox Code Playgroud)

不同之处在于,如果找不到与列表中的条件匹配的项目,a则将设置为default(int),而不是集合中最后一项的值.