質問
次のコードがあります:
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; }
}
所属していません StackOverflow