はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】null許容型について

はじめに

C#が扱う型(int,stringなど)には値型参照型が存在します。

この参照型には何も参照していない状態を意味する「null」が存在します。

しかし値型には通常「null」を設定することができません。

今回は値型でもnullを扱う方法を紹介したいと思います。

簡単な実験

実際に値型にはnullがないのか簡単な実験をしてみたいと思います。

void Start()
{
    string str = null;     //stringは参照型

    if(str == null)
    {
        Debug.Log("strは参照型なのでnullを格納できる");
    }

}
int num = null;        //intは値型


上のコードは実行ができるのですが、下のコードではエラーになってしまいます。
つまり値型にはnullを格納できないということですね。

null許容型

しかしnull許容型を用いれば値型にもnullを格納できるようにできます。

void Start()
{
    int? num = null;        //intは値型

    if(num == null)
    {
        Debug.Log("numは値型だがnull許容型なのでnullを格納できる");
    }

}


このように「型名+?」とすることでnull許容型になりnullを格納できるようになります。

さいごに

null許容型に関連してNull演算子Null合体演算子がよく紹介されるようです。
良ければそちらもチェックしてみてはどうでしょうか。

?と??ーNull許容型・Null条件演算子 - Unityな日々(Unity Geek)