代码之家  ›  专栏  ›  技术社区  ›  lance

如果从未发生收益率返回,是否返回null?

  •  13
  • lance  · 技术社区  · 14 年前

    3 回复  |  直到 14 年前
        1
  •  17
  •   Dario    14 年前

    一个有效的IEnumerable,在遍历它时不产生任何值。

    试想一下:您可以将IEnumerable生成器存储在一个变量中—代码本身只是在实际遍历结果时执行的。如果你有,你怎么能执行代码 null 知道

        2
  •  8
  •   Jay    14 年前

    后者——你将能够 GetEnumerator() 不管怎样,都不会有什么可列举的项目。这相当于 Enumerable.Empty<T> .

        3
  •  2
  •   Jon Hanna    14 年前

    public static IEnumerable<T> EmptyEnum<T>()
    {
        yield break;
    }
    

    在System.Linq.Enumerable.Empty()出现之前。在很多情况下非常有用,通常是因为它不返回null。例如,如果GetIntEnum()可以返回某种IEnumerable类型,但也可以返回null,那么 GetIntEnum() ?? Enumerable.Empty<T>() 给我们一些总是可以安全枚举的东西(假设在空结果的情况下这是所需的behviour)。