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

时间:2014-08-01 04:08:09

标签: c# foreach

通常每次写这样的

List<int> intList = new List<int>();
foreach(int a in intList)
{
  if(a > 5){
     break;
  }
}

是否可以做这样的事情

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

3 个答案:

答案 0 :(得分:6)

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

foreach-statement:
foreach   (   local-variable-type   identifier   in   expression   )
    embedded-statement

如您所见,local-variable-type是此处语法的一部分,因此代码中需要使其成为正确的C#代码。

你应该使用LINQ和FirstOrDefault以更清洁的方式获得类似的行为:

List<int> intList = new List<int>();
int a = intList.FirstOrDefault(x => x > 5)

不同的是,如果您找不到与列表中的条件匹配的商品,则a将设置为default(int),而不是您商品中最后一项的价值。< / p>

答案 1 :(得分:2)

如果你要做的是找到列表中第一个大于5的值,那么这样的代码就会更少,更清晰:

 int a = intList.Find(x => x > 5);

答案 2 :(得分:0)

否则你可以这样做....

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