どうしてますか?
って単純な疑問を提示するだけのエントリー
例えば、こんなやつ(Any()の結果を反転するパターン)
void Hoge<T>(IEnumetable<T> foo) { // fooがnullまたは空の時 if(!(foo?.Any() ?? false)) Initialize(); DoSometing(); }
…!とか出来たら使いたくない
例えば、こんなやつ2(Allするパターン)
void Hoge<T>(IEnumetable<T> foo) { // fooがnullまたは空の時 if(foo?.All(_ => false) ?? true) Initialize(); DoSometing(); }
…空集合に対するAllが必ずtrueなことを知らないと戸惑う + 直感的じゃない
例えば、こんなやつ3(数えたらいいじゃん)
void Hoge<T>(IEnumetable<T> foo) { // fooがnullまたは空の時 if((foo?.Count() ?? 0) == 0) return; Initialize(); DoSometing(); }
…無限のIEnumerable
例えば、こんなやつ4(else使おうよ)
void Hoge<T>(IEnumetable<T> foo) { // fooがnullまたは空の時 if(foo?.Any() ?? false) { DoSometing(); } else { Initialize(); DoSometing(); } }
…DoSometing();2回書いてる
例えば、こんなやつ4(else使おうよ2)
void Hoge<T>(IEnumetable<T> foo) { // fooがnullまたは空の時 if(foo?.Any() ?? false) { } else { Initialize(); DoSometing(); } }
…ifで実行されるの空じゃん
例えば、こんなやつ4(それっぽいメソッド作る)
sstatic class Extensions { internal static bool IsNullOrEmpty<T>(this IEnumerable<T> target) => foo?.All(_ => false) ?? true; } void Hoge<T>(IEnumetable<T> foo) { // fooがnullまたは空の時 if(foo.IsNullOrEmpty()) Initialize(); DoSometing(); }
…空集合に対するAllが必ずtrueなことを知らないと戸惑うけど名前付いた
他にもあるかもですが、どれが好きですか?
個人的には(たくさん書くなら)最後のやつかな