ネコのために鐘は鳴る

寺院に住み着くパソコ〇好き

(C#) 小ネタ $ 文字列中の三項演算子

小ネタです。

はてなブログC# の linter が古いのか、シンタックスハイライトがめちゃくちゃになってますが気にしないでください。

string Foo(int? num)
{
    // これはコンパイルエラー
    return $"The num is {num == null ? "NULL" : num.Value.ToString()}.";
}

string interpolation ($文字列) の中に三項演算子は書けないです。もしこれを書けるように認めると、コンパイラ構文解析のコストが高くなりすぎるらしいです、たしか。

悲しいですね。

なのでコンパイラの気持ちになってあげましょう。

string Foo(int? num)
{
    // 全体を () で包むとコンパイルが通る
    return $"The num is {(num == null ? "NULL" : num.Value.ToString())}.";
}

コンパイラにここまでが値だよ~と教えてあげるために全体をカッコで包んであげましょう。はい、優しさに包まれましたね。