Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果收益率返回从未发生,是否返回空值?_C#_Ienumerable_Yield Return - Fatal编程技术网

C# 如果收益率返回从未发生,是否返回空值?

C# 如果收益率返回从未发生,是否返回空值?,c#,ienumerable,yield-return,C#,Ienumerable,Yield Return,该方法通过yield-return语句返回IEnumerable 如果yield语句从未出现(它位于条件逻辑内部),该方法将返回null,还是返回计数为0的可枚举项?一个有效的IEnumerable,当您遍历它时,它不会生成任何值 试想一下:您可以将IEnumerable生成器存储在一个变量中—代码本身只是在您实际遍历结果时执行的。如果有null,如何执行代码?或者您如何知道函数不运行就不会产生任何结果。后者--您将能够GetEnumerator()无论如何,都不会有任何要枚举的项。这相当于可枚

该方法通过yield-return语句返回IEnumerable


如果yield语句从未出现(它位于条件逻辑内部),该方法将返回null,还是返回计数为0的可枚举项?

一个有效的IEnumerable,当您遍历它时,它不会生成任何值


试想一下:您可以将IEnumerable生成器存储在一个变量中—代码本身只是在您实际遍历结果时执行的。如果有
null
,如何执行代码?或者您如何知道函数不运行就不会产生任何结果。

后者--您将能够
GetEnumerator()
无论如何,都不会有任何要枚举的项。这相当于
可枚举。Empty

事实上,倾向于大量使用枚举的2.0编码器在其工具包中有一个标准部分:

public static IEnumerable<T> EmptyEnum<T>()
{
    yield break;
}
public静态IEnumerable EmptyEnum()
{
屈服断裂;
}
在System.Linq.Enumerable.Empty()出现之前。在很多情况下非常有用,通常正是因为它不返回null。例如,如果GetIntEnum()可以返回某种IEnumerable类型,但也可以返回null,那么
GetIntEnum()??Enumerable.Empty()
为我们提供了一些始终可以安全枚举的内容(假设这是空结果情况下所需的行为)