
はじめに
C#にてDateTime型をNullで初期化しようとすると「Null 非許容の値型であるため、null を 'System.DateTime' に変換できません。」というエラーになります。
DB等から日付型の項目を取得した際にNullだった場合、Nullを入れようとしてプログラムがエラーで落ちてしまうなどという原因になります。
JavaをやっていてC#を書く際に1回は遭遇するのではないかと思います。
実際、自分もそうでした。
初期値を入れる
Nullだった場合にDateTime.MinValueやDateTime.MaxValueで初期値を入れてしまうという方法もなくはないと思います。
ただし、この方法を取るとそのルールを知っていなければエラーや単純バグ、仕様バグの元になりかねません。
Null許容型を使う
上記を解決するためにNull許容型(Nullable)を使うという方法があります。
DateTime型にNull値を入れることを許可させます。方法は以下になります。
1 | DateTime? date = null; |
型の後ろに?をつけるだけでNullを入れることができるようになります。
ただし、Null許容型にはいっている値をNullを許容しない元の型には直接入れる事は出来ません。その場合はキャスト等の処理を施してください。
メソッド化するときも以下のように簡単にできます。
1 2 3 4 5 | public DateTime? GetDateTime() { // 処理 return null; } |

![[Mac]任意のポートを使用しているプロセスを調べてKillする方法](https://www.yukiiworks.com/wp-content/uploads/2019/03/code1211IMGL1494_TP_V4-150x150.jpg)
![[javascript]ブラウザの戻るボタンで戻ってきた時になんらかの処理をする方法](https://www.yukiiworks.com/wp-content/uploads/2019/05/javascript-150x150.png)
![[AWS]Lambdaの環境変数をCLIコマンドで設定する](https://www.yukiiworks.com/wp-content/uploads/2020/04/lambda30-150x150.png)
![[Kotlin][Android]BottomNavigationViewとViewPagerを用いたタブ遷移の実装](https://www.yukiiworks.com/wp-content/uploads/2019/04/kotlin-150x150.png)
![[Flutter]chopper_generator使用時にbuild_runnerのビルドが完了しない問題の解消法](https://www.yukiiworks.com/wp-content/uploads/2020/08/flutter-150x150.png)
![[AndroidX対応]Error inflating class android.support.design.widget.BottomNavigationViewエラーについて](https://www.yukiiworks.com/wp-content/uploads/2019/04/android-150x150.jpg)
![[Android]java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/R$string;エラーについて](https://www.yukiiworks.com/wp-content/uploads/2019/10/android-studio-e1585186990750-150x150.jpg)
![[Swift]UITextViewでリンクはタップできるまま長押しとダブルタップでの選択を防ぐ方法](https://www.yukiiworks.com/wp-content/uploads/2019/04/swift-150x150.png)
