『究極のC#プログラミング』Chapter5 Nullable型

なぜnullを入れたいのか

構造体は参照型と値型が同じように扱えるメリットがある。例えば、とりあえずToString()をつければ文字列になる。
これと同じで、nullも参照型と値型が同じように扱えるメリットがある。つまり、値型にもデフォルト値であるnullを許容するということ。

nullable型の内部構造

null許容型は、実際には、

System.Nullable<T>

という構造体の省略形である。
これは、HasValue, Valueというプロパティをもつ。

null合体演算子

nullだった場合に補う値を簡潔に書ける
値型にも参照型にも使用できる

Console.WriteLine(Console.ReadLine() ?? "EOF");  // nullだった場合に"EOF"

is演算子とnullable型

三値論理型とbool?型

nullable型のパフォーマンス

メモリを多く使うのはもちろん、速度でも桁違いに遅くなる
本当に必要な時だけ使用すべき

その他

int?は値型である