C#

はじめに

C#にてDateTime型をNullで初期化しようとすると「Null 非許容の値型であるため、null を 'System.DateTime' に変換できません。」というエラーになります。 
DB等から日付型の項目を取得した際にNullだった場合、Nullを入れようとしてプログラムがエラーで落ちてしまうなどという原因になります。
JavaをやっていてC#を書く際に1回は遭遇するのではないかと思います。 
実際、自分もそうでした。

初期値を入れる

Nullだった場合にDateTime.MinValueやDateTime.MaxValueで初期値を入れてしまうという方法もなくはないと思います。
ただし、この方法を取るとそのルールを知っていなければエラーや単純バグ、仕様バグの元になりかねません。

Null許容型を使う

上記を解決するためにNull許容型(Nullable)を使うという方法があります。 
DateTime型にNull値を入れることを許可させます。方法は以下になります。

型の後ろに?をつけるだけでNullを入れることができるようになります。 
ただし、Null許容型にはいっている値をNullを許容しない元の型には直接入れる事は出来ません。その場合はキャスト等の処理を施してください。 
メソッド化するときも以下のように簡単にできます。

おすすめの記事