すごく前にらりおさんが気持ち悪がってたC# の仕様
https://mastodon.cardina1.red/@lo48576/110038572866964580
https://ufcpp.net/blog/2020/12/isnull/
void M(A a)
{
if (a.X is not { } x) return; // null だったら early return。
// ここでxにアクセスできるのわけわからん
// ちなみに ' is not { } x 'は' x is not object'のシンタックスシュガーみたいな感じなのでxはobject型
}
これについていまさら調べたけど、これは別にifのブロックに対して宣言してるわけじゃなく、平たく
object x = (object)a.X;
と書いたのと同じ意味の文法であるというただそれだけの話らしい><
で、その上でDefinitely Assignedって言うルールで、コンパイラがその部分ではその宣言が有効かを静的に検査してくれるので、さらに安全だよって話らしい・・・><
つまり、この例でいうとTestFuncA()は、TestFuncB()のシンタックスシュガー的なのって事><