すごく前にらりおさんが気持ち悪がってたC# の仕様
mastodon.cardina1.red/@lo48576
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()のシンタックスシュガー的なのって事><

ログインして会話に参加
:realtek:

思考の /dev/null