豚吐露@wiki
DateTimeの初期値に『0001/01/01 00:00』を入れたくない
最終更新:
ohden
-
view
DateTimeの初期値に『0001/01/01 00:00』を入れたくない
『DateTime』で宣言してるとこを『DateTime?』で宣言すると初期値が『0001/01/01 00:00』から『null』になる。
『DateTime?』と『Nullable<DateTime>』は同じで、その値型でnullを許容するという宣言。
※DateTimeは構造体なので値型。
よって、nullの代入が可能となるが、『DateTime』と『DateTime?』は全く別の型であるという認識が必要。
※DateTimeは構造体なので値型。
よって、nullの代入が可能となるが、『DateTime』と『DateTime?』は全く別の型であるという認識が必要。
例えば、以下のようなコードを書くとエラーとなる。
e.g.)
e.g.)
DateTime? date = null; date = DateTime.Now; date.ToString("yyyyMMdd");
これは『DateTime』型に『ToString(string hoge)』というメソッドはあるが、『DateTime?』型に『ToString(string hoge)』というメソッドは無いことが原因。
このような場合は、以下のように『date.Value』を参照することで回避が可能。
e.g.)
e.g.)
DateTime? date = null; date = DateTime.Now; date.Value.ToString("yyyyMMdd");
また、Nullable型の場合のみ『??』演算子が使用可能となる。
『??』演算子は以下のように使用する。
e.g.)
『??』演算子は以下のように使用する。
e.g.)
int? x = 1; z = x ?? y;
これを??演算子を使わずに書き直すと...
e.g.)
e.g.)
int? x = 1; if (null != x) { z = x; } else { z = y; }
となる。
nullableな場合にありがちなnull判定を演算子一発でやってくれる優れものです。
rubyとかだと
z = x || y
ですな。
更新日: 2021年02月19日 (金) 17時31分21秒