【发布时间】:2013-09-20 16:33:36
【问题描述】:
我非常努力不让 Visual Studio 允许我在没有真正了解发生了什么的情况下修复代码。但是在这里它帮助我解决了一个问题,我想确保在继续之前我了解发生了什么。
阅读文档让我觉得我在传递一个方法作为参数?为什么在将它作为参数传递时,我必须在 exposureIterator() 的末尾使用 () 而不是仅使用 exposureIterator(下面的第一个 Bar 方法是正确的)?我觉得我一定是有一个史诗般的大脑放屁,或者错过了一些非常重要的东西。真希望是前者……
感谢您的帮助:)
public void Foo (Ienumerable iterator)
{
...
}
public static System.Collections.IEnumerable exposureIterator()
{
for (int i = 20; i < 55; i += 5)
{
yield return i.ToString();
}
}
public void Bar()
{
Foo(exposureIterator());
}
VS
public void Bar()
{
Foo(exposureIterator);
}
编辑:刚刚意识到。 System.Collections.IEnumerable 只是一个返回类型,它被这样引用让我感到困惑。呼噜呼噜。再次感谢大家的澄清:)
【问题讨论】:
-
Foo(IEnumerable iterator) 需要一个 IEnumerable。 ExposeIterator() 返回一个 IEnumerable。因此,当您调用 Foo(exposeIterator()) 时,您会将 ExposeIterator() [an IEnumerable] 的结果传递给 Foo。