Yang sama dengan DateTime.MinValue, sehingga Anda juga bisa melakukannya DateTime myDate = DateTime.MinValuejuga: /
Lloyd
20
@Lloyd Sebagian besar waktu ... tetapi bukan sebagai parameter default DateTime.MinValue bukan konstanta waktu kompilasi - tetapi default (DateTime) / DateTime baru () adalah.
Ricibob
12
Hanya untuk memperjelas komentar Ricibob yang luar biasa, karena itu penting: jika Anda membuat metode dengan parameter opsional, Anda HANYA dapat menggunakan salah satu default(DateTime)atau new DateTime(). Keduanya adalah konstanta waktu kompilasi , diperlukan untuk nilai parameter opsional. Jika konstanta waktu kompilasi tidak diperlukan, maka default(DateTime), new DateTime(), dan DateTime.MinValueyang dipertukarkan.
leanne
Jawaban:
200
Tidak, mereka identik.
default(), untuk semua tipe nilai ( DateTimeadalah tipe nilai) akan selalu memanggil konstruktor tanpa parameter.
FWIW; Di C # 6 perilaku ini akan berubah. C # 6 memperkenalkan konstruktor tanpa parameter untuk struct, yang memungkinkan perilaku newberbeda dari apa yang default(T)akan dilakukan.
vcsjones
30
Orang bisa berpendapat bahwa default(DateTime)ini lebih deskriptif dari maksud programmer, oleh karena itu biasanya lebih menguntungkan.
intrepidis
16
@vcsjones ini telah dihapus sebelum rilis final C # 6.0.
nawfal
5
@nawfal Ya. Mungkin yang terbaik juga.
vcsjones
Jawaban ini hanya salah IMO: kedua hal itu identik secara semantik, tetapi tidak satu pun dari mereka memanggil konstruktor - keduanya menggunakan opsi sintaksinitobj
Marc Gravell
22
Jika Anda ingin menggunakan nilai default untuk parameter DateTime dalam suatu metode, Anda hanya bisa menggunakan default (DateTime).
Tentu saja DateTime.MinValue tidak dikompilasi? Parameter opsional harus berupa konstanta waktu kompilasi, yang bukan MinValue. default (DateTime) dan DateTime baru () keduanya valid. (yang sebenarnya lucu, karena const DateTime x = default (DateTime) tidak valid, karena nilai DateTime tidak dapat dideklarasikan sebagai konstanta waktu kompilasi)
Jerri Kangasniemi
16
Jawabannya adalah tidak. Ingatlah bahwa dalam kedua kasus mdDate.Kind = DateTimeKind.Unspecified,.
Karena itu mungkin lebih baik untuk melakukan hal berikut:
Saya menentang hal ini. Default DateTimeini berguna sebagai nilai value-not-set, dengan perbandingan sederhana untuk default(DateTime). Apa gunanya nilai non-standar 01/01/0001?
Rawling
Ingatlah bahwa itu adalah DateTimeKind.Utc dan bukan DateTimeKind.UTC
Roberto
@Roberto Terima kasih, sudah diperbaiki.
jpaugh
-3
Cara paling sederhana untuk memahaminya adalah DateTime adalah sebuah struct. Ketika Anda menginisialisasi sebuah struct, itu akan menginisialisasi nilai minimum:DateTime.Min
Oleh karena itu tidak ada perbedaan antara default(DateTime)dan new DateTime()danDateTime.Min
Tidak, struct tidak harus diinisialisasi ke nilai minimumnya. Mereka diinisialisasi ke semua bit menjadi nol. Untuk beberapa jenis, itulah nilai terendahnya, untuk yang lain, seperti jenis numerik yang bisa negatif, tidak ada yang mendekati nilai minimumnya. Dan tentu saja, yang lain masih tidak akan sebanding dan tidak akan memiliki nilai "minimum".
DateTime.MinValue
, sehingga Anda juga bisa melakukannyaDateTime myDate = DateTime.MinValue
juga: /default(DateTime)
ataunew DateTime()
. Keduanya adalah konstanta waktu kompilasi , diperlukan untuk nilai parameter opsional. Jika konstanta waktu kompilasi tidak diperlukan, makadefault(DateTime)
,new DateTime()
, danDateTime.MinValue
yang dipertukarkan.Jawaban:
Tidak, mereka identik.
default()
, untuk semua tipe nilai (DateTime
adalah tipe nilai) akan selalu memanggil konstruktor tanpa parameter.sumber
new
berbeda dari apa yangdefault(T)
akan dilakukan.default(DateTime)
ini lebih deskriptif dari maksud programmer, oleh karena itu biasanya lebih menguntungkan.initobj
Jika Anda ingin menggunakan nilai default untuk parameter DateTime dalam suatu metode, Anda hanya bisa menggunakan default (DateTime).
Baris berikut tidak akan dikompilasi:
Baris ini akan mengkompilasi:
sumber
Jawabannya adalah tidak. Ingatlah bahwa dalam kedua kasus
mdDate.Kind = DateTimeKind.Unspecified
,.Karena itu mungkin lebih baik untuk melakukan hal berikut:
The
myDate.Kind
properti dibaca, sehingga tidak dapat diubah setelah konstruktor disebut.sumber
DateTime
ini berguna sebagai nilai value-not-set, dengan perbandingan sederhana untukdefault(DateTime)
. Apa gunanya nilai non-standar01/01/0001
?Cara paling sederhana untuk memahaminya adalah DateTime adalah sebuah struct. Ketika Anda menginisialisasi sebuah struct, itu akan menginisialisasi nilai minimum:
DateTime.Min
Oleh karena itu tidak ada perbedaan antara
default(DateTime)
dannew DateTime()
danDateTime.Min
sumber