これらのいずれかを選択する理由はありますか?新しいDateTime()とデフォルト(DateTime)
DateTime myDate = new DateTime();
又は
DateTime myDate = default(DateTime);
それらの両方が1/1/0001 12:00:00 AM
等しいです。
これらのいずれかを選択する理由はありますか?新しいDateTime()とデフォルト(DateTime)
DateTime myDate = new DateTime();
又は
DateTime myDate = default(DateTime);
それらの両方が1/1/0001 12:00:00 AM
等しいです。
いいえ、それらは同一です。
default()
の場合、任意の値型(DateTime
は値型)では、常にパラメータなしコンストラクタが呼び出されます。
答えはいいえです。どちらの場合も、mdDate.Kind = DateTimeKind.Unspecified
を念頭に置いてください。
そのためには、次の操作を実行する方が良い場合があります。
DateTime myDate = new DateTime(1, 1, 1, 0, 0, 0, DateTimeKind.Utc);
myDate.Kind
プロパティは読み取り専用であるため、コンストラクタが呼び出された後、それを変更することはできません。
これはOPの質問にどのように答えますか? –
私の答えの最初の4つの言葉を見てください。 –
私はこれに反論したい。デフォルトの 'DateTime'は' default(DateTime) 'と簡単に比較して、値が設定されていない値として便利です。デフォルト以外の '01/01/0001'の値はどのように使用されますか? – Rawling
メソッドのDateTimeパラメータにデフォルト値を使用する場合は、デフォルト(DateTime)のみ使用できます。
次の行はコンパイルされません。
private void MyMethod(DateTime syncedTime = DateTime.MinValue)
は、この行は、コンパイルされます:あなたはまた、単に `行うことができますので、DateTime.MinValue``に等しい
private void MyMethod(DateTime syncedTime = default(DateTime))
それは私が探していた答えでした。ありがとう! – GigaKatowice
もちろん、DateTime.MinValueはコンパイルされませんか?オプションのパラメータはコンパイル時定数でなければなりません。MinValueはコンパイル時定数ではありません。 DateTime値はコンパイル時定数として宣言することができないので、const DateTime x = default(DateTime)は無効なので、実際には面白いです) –
のDateTimeいるMyDate =のDateTime .MinValue'も同様です:/ – Lloyd
@Lloydほとんどの場合...デフォルトのパラメータとしてではありません。DateTime.MinValueはコンパイル時定数ではありませんが、デフォルト(DateTime)/ new DateTime()はデフォルトです。 – Ricibob
@ Ricibobの優れたコメントを明確にすることは重要です。オプションのパラメータを使ってメソッドを作成する場合は、 'default(DateTime)'か 'new DateTime()'のどちらかしか使用できません。これらはどちらもオプションのパラメータ値に必要なコンパイル時定数*です。コンパイル時定数が必要ない場合、 'default(DateTime)'、 'new DateTime()'、 'DateTime.MinValue'は互換性があります。 – leanne