今日、ちょっとテクハラをはたらこうと思い、コードを書きました。
static bool Hoge<T>(IEnumerable<T> target) => target.All(_ => false);
このメソッドから『true』が返ることってあると思う?って聞いてみた結果…
「Allってのがそもそもわかりませんね…」と言われ…
Allってそんなにマイナーなメソッドなの?
static bool Hoge<T>(IEnumerable<T> target) => target.Any(_ => true);
にして、このメソッドから『false』が返ることってあると思う?
って聞けば良かったのか?
まあどっちでも良いといえば良いんですけど、
良いんですけどなんかな~
斜め上な返しをいただいたもので何ともC#のマイナーなこと…
いや、これはC#の話ではなくて数学の問題なのでは?(こじつけ)
Allって要は全称命題(∀x∈target,P(x))なわけだから
targetが空集合なら真(∃x∈target,¬P(x) が真になれない)
になることはC#を知らなくてもわかるはず(無理矢理)
と言うことで(ご存知だと思いますが)上の答えは「ある」
{
Hoge<object>(Enumerable.Empty());
}
とか書けばいい(空集合(空の列挙)を渡せば良いのでnew string[]{}とかでも良い)
と言う愚痴でした。