foreach または LINQ クエリを使用して an を反復処理する前に、 an が null であるかどうかを確認するという問題に頻繁に直面しIEnumerable<T>
ます。その後、次のようなコードになることがよくあります。
var myProjection = (myList ?? Enumerable.Empty<T>()).Select(x => x.Foo)...
したがって、この拡張メソッドを Extensions クラスに追加することを考えました。
public static class MyExtensions
{
public static IEnumerable<T> AsEmptyIfNull<T>(this IEnumerable<T> source)
{
return source ?? Enumerable.Empty<T>();
}
}
このコードを見てすぐにちょっとした問題が頭に浮かびます。つまり、拡張メソッドの「インスタンス メソッドの側面」を考えると、単なる静的メソッドとして実装する必要があります。そうでなければ、このようなものは完全に合法です。
IEnumerable<int> list = null;
list.AsEmptyIfNull();
それを使用する上で他に欠点はありますか?
このような拡張機能が大量に使用された場合、開発者に何らかの悪い傾向をもたらす可能性はありますか?
おまけの質問:
より良い名前を提案できますか? :)
(英語は私の母国語ではないので、ネーミングは苦手です...)
前もって感謝します。