首页 > 解决方案 > 这里叫什么:return _()

问题描述

Batch.cs我在文件(链接)中的 MoreLinq 中遇到了此代码:

return _(); IEnumerable<TResult> _()

我阅读了丢弃物,但仍然无法理解上面的代码。当我将鼠标悬停在第一个上面时,_它会说:“捕获的变量:resultSelector,collection”。

标签: c#

解决方案


_()是对名为 的本地函数的调用_。不寻常,但有效。

局部函数大致类似于常规方法,除了它只能从声明它的方法内部按名称(即通常调用方法的方式)调用(正如 Eric 在评论中指出的那样,还有其他一些方法它可以被调用,例如通过从方法传递的委托),并且(除非装饰static)它可以从声明方法中获取局部变量和参数作为状态。

在这种情况下,目的是执行急切的参数验证。使用迭代器块中的验证代码,参数验证将推迟到第一次MoveNext()调用。(即它不会抱怨直到source有人null试图foreach覆盖数据)。


推荐阅读