从其他类使用GetEnumerator时如何处理foreach null异常?

Ale*_*Wei 2 c# ienumerable ienumerator foreach

我有两个实现的ABIEnumerable.

使用的GetEnumerator从.
BA类成员.

但是成员B可以为null,所以我添加了null check.

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

在下面的示例:
rootNode.
所示功能是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?
            }
        }
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 5

不要返回null但使用空集合:

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