スポンサーリンク

最近のコードの「?」について

Null対策

Java1.xが長い私にとってはNull比較は必須だったので、勘違いしていたことを記述します。

C#の場合(ほとんど同じだと思いますが)

記号名称役割
?(型の後ろ)nullable 修飾子null を許容する型を作る
??null 合体演算子左が null のとき右を返す
??=null 合体代入演算子左が null のとき右を代入する

??(合体演算子の便利さに勘違い)

PHPで覚えましたが、これ便利ですよね。

var txt = "";
if (texts[0] != null) {
    txt = texts[0];
}

// 上の4行が下の1行で済みます。
var txt = texts[0] ?? "";

// このノリで以下の様にしていると自動でnull処理してくれるのかなと思っていましたw。
string? txt = texts[0];

?(nullable 修飾子)はあくまでnullの可能性があることを開発者に伝えるものなんですね。
なのでnull比較は必須にしないと事故が起こる可能性があります。

最近のIDEは警告を付けてくれるので大変ありがたいですね。
とか言いながら今VB6をやってたりするのですが・・・。

苦しい言い訳

特にJava経験者だと「ぬるぽ」が当たり前なので「何故、今更nullを意識しないといけないのか?」と思った私のような方も少しはいるのではないでしょうか。

理屈がわかれば非常に有用な仕組みですね。