Nullable型
整数変数は(有限範囲の)整数を表すが、0 (ゼロ) を特殊なケースとして扱うことがある。これは、C言語を始めとする多くのプログラミング言語で、0が真偽値の "false" を意味する場合があるためである。ただし、これは変数が空(無効)であることが明示されず、有効な値としての0と区別ができないという欠点があるが、多くの状況では区別が必要になる。これを実現するのがNullable型である。
C#ではクラスなどの参照型はnull値をとることができるものの、組み込みの整数型intなどに代表される構造体のような値型(System.ValueTypeから派生する特殊なオブジェクト型)はnull値をとることができない。C# 2.0以降では、たとえば、Nullable整数は疑問符を用いて int? x で宣言できる。T?は内部的にはジェネリクス型System.Nullable<T>のエイリアスであり、前記の例は System.Nullable<int> x として展開される。