コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】null合体演算子によるキャッシュ

class Character
{
    private Status status;

    public Status Status
    {
        get
        {
            if (status == null)
            {
                status = new Status();
            }
            return status;
        }
    }
}

必要となった時に初めてインスタンスを作る場合
if文でnullチェックを行うと上記の書き方になりますが
C#であればnull合体演算子を使用することで
下記のように書くことができます

class Character
{
    private Status status;

    public Status Status
    {
        get
        {
            return status ?? (status = new Status());
        }
    }
}

1行でスッキリ収まります

null合体演算子の右辺の代入は
括弧で囲まないと優先順位の関係でエラーになるので注意が必要です