我注意到这段代码可以正常工作:
class Program
{
public static void Main()
{
Int32[ ]numbers = {1,2,3,4,5};
using (var enumerator = Data().GetEnumerator())
{
}
}
public static IEnumerable<String> Data()
{
yield return "Something";
}
}
我特别关注using
块,因为:
Int32[] numbers = { 1, 2, 3, 4, 5, 6 };
using (var enumerator = numbers.GetEnumerator())
{
}
使用编译器出现错误。很显然,yield return
返回的类是IDisposable
,而普通的数组枚举器不是。因此,我很好奇:yield return
究竟创建了什么?