从其他 class 使用 GetEnumerator 时如何处理 foreach 空异常?

How to handle foreach null exception when using GetEnumerator from other class?

我有两个 Classes AB 实现了 IEnumerable

A 使用 B.
中的 GetEnumerator B 是 Class A 的成员。

但是成员B可能为空,所以我添加了空检查。

问题在代码示例的注释中也有说明。应该在另一个分支中放置什么来停止 foreach 空异常?

在下面的例子中:
rootNodeB.
图示的函数是A.
的函数 BA 的成员。

        public IEnumerator<BVHNode<BoundingVolumeClass>> GetEnumerator()
        {
            if (rootNode != null)
            {
                return rootNode.GetEnumerator();
            }
            else
            {
                return null;
                //return null cause foreach null exception
                //what can be put here to stop it?
            }
        }

不要 return null 但使用 空集合 :

    public IEnumerator<BVHNode<BoundingVolumeClass>> GetEnumerator()
    {
        return rootNode == null
          ? Enumerable.Empty<BVHNode<BoundingVolumeClass>>().GetEnumerator()
          : rootNode.GetEnumerator();
    }