質問

次のコードがあります:

    public IEnumerable<int> Iterator {
        get { if (false) yield return -1; }
    }

かなりいですが、リファクタリングしようとすると:

    public IEnumerable<int> Iterator {
        get { return null; }
    }

次のコードは壊れています:

foreach (var item in obj.Iterator) {
}

これをどのようにクリーンアップしますか?

役に立ちましたか?

解決

.NETフレームワークには、これを正確に行う方法が既にあります(Jaredのコードを冗長にする): System.Enumerable.Empty<T>

他のヒント

public IEnumerable<int> Iterator {
    get { yield break; }
}

より良い解決策は、この問題に対して再利用可能なメソッドを定義することです。共有ライブラリにメソッドを保持して、このケースを処理します。

public static class CollectionUtility { 
  public static IEnumerable<T> CreateEmptyEnumerable<T>() {
    yield break;
  }
}

メソッド内で呼び出すことができます

public static IEnumerable<int> Iterator { 
  get { return CollectionUtility.CreateEmptyEnumerable<int>(); }
}
  public IEnumerable<int> Iterator {
        get { yield break; }
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top