Null安全

null許容参照型を使うことによって、null安全となる。

参照型は許容するもなにもnullがつきものでは?

nullは意図して使っている場合もあるため、nullを意識してコーディングが可能になるのがC#8.0以降に導入されたnull許容参照型

参照型の定義方法
  • 普通の参照型:単純に型Tと宣言
  • null許容参照型:型T?と宣言
MyParentクラス

class MyParent
{
    public MyChild MyChild{ get; private set;}
    public MyParent(){}
}
実際にnull許容参照型を使ってみる

環境はVisual Studio 2019でNull許容を有効化している

パターン1


MyParent mp = null;

上記の場合、null非許容型にnullを変換している警告がでる。

パターン2


MyParent? mp = null; 
    

上記の場合、null許容参照型にnullを入れているため、特に警告は出ない

パターン2の場合なにがうれしいのか

MyParentのnull許容参照型の変数mpを使用する際に、効果を発揮する。

MyParentクラスにはMyChildクラスのメンバ変数があり、これを使いたいと思ったとき、以下のコードを書くとする


var mc = mp.MyChild;
    

このとき、null許容参照型を参照しているという警告がでる。上記の場合mpにnullが入っていることが一目瞭然であるが、コードが長くなるときに重宝する