読者です 読者をやめる 読者になる 読者になる

ゆるふわで雑な日記

Microsoft系の技術情報を中心にゆるふわに綴っていく予定です

なんだか少し悲しくなった話

今日、ちょっとテクハラをはたらこうと思い、コードを書きました。

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[]{}とかでも良い)
と言う愚痴でした。