はじめに
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を格納できるようになります。