web-dev-qa-db-ja.com

新しいDateTime()とデフォルト(DateTime)

これらのうちの一つを他よりも選ぶ理由はありますか?

DateTime myDate = new DateTime();

または

DateTime myDate = default(DateTime);

どちらも1/1/0001 12:00:00 AMと同じです。

168
RJP

いいえ、それらは同一です。

default()は、任意の値型(DateTimeは値型です)に対して常にパラメータのないコンストラクタを呼び出します。

176
Servy

メソッドのDateTimeパラメータにデフォルト値を使用する場合は、default(DateTime)のみを使用できます。

次の行はコンパイルされません。

    private void MyMethod(DateTime syncedTime = DateTime.MinValue)

この行はコンパイルされます:

    private void MyMethod(DateTime syncedTime = default(DateTime))
20
Tomer

答えはノーだ。どちらの場合もmdDate.Kind = DateTimeKind.Unspecified

したがって、次のようにしたほうがよいでしょう。

DateTime myDate = new DateTime(1, 1, 1, 0, 0, 0, DateTimeKind.Utc);

myDate.Kindプロパティは読み取り専用なので、コンストラクタが呼び出された後で変更することはできません。

16
Ben C