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が入っていることが一目瞭然であるが、コードが長くなるときに重宝する