从foreach声明中返回是否有任何副作用?

Edw*_*uay 14 c# foreach

类似于我使用声明中返回的问题(其答案通常 " 是的,没关系 ")我想知道从foreach语句中返回是否同样没有副作用并被认为是公认的练习,或者当我做这就是我把一个指针挂在中间某个内部的枚举,等等.

这是一个例子:

public string GetCurrentTransaction(string idText)
{
    foreach (var transaction in transactions)
    {
        if (idText.IsEquivalentTo(transaction.IdText))
        {
            return transaction.Content;
        }
    }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

Adr*_*der 14

不,没有看到任何问题.

来自foreach,in(C#Reference)

也可以通过goto,return或throw语句退出foreach循环.


Jus*_*ner 5

只要没有实现IDisposable的东西(或者using周围有一个块),那应该没问题。

据我所知,这是一种相当普遍且被接受的做法,正如Astander在他的帖子中提到的那样,有关文档将其foreach容忍为合法做法。

  • 实际上,`foreach`将处理`IEnumerator <>`,因此,如果枚举器本身是一次性的,则可以。另请参阅此问题的公认答案:http://stackoverflow.com/questions/232558/why-ienumerator-of-t-inherts-from-idisposable-but-non-generic-ienumerator-does-n (2认同)