Bunlardan birini diğerinden seçmenin bir nedeni var mı?new DateTime() vs varsayılan (DateTime)
DateTime myDate = new DateTime();
veya
DateTime myDate = default(DateTime);
Her ikisi de
1/1/0001 12:00:00 AM
eşittir.
Bunlardan birini diğerinden seçmenin bir nedeni var mı?new DateTime() vs varsayılan (DateTime)
DateTime myDate = new DateTime();
veya
DateTime myDate = default(DateTime);
Her ikisi de
1/1/0001 12:00:00 AM
eşittir.
Hayır, aynıdırlar.
default()
, herhangi bir değer türü için (DateTime
bir değer türüdür) her zaman parametresiz yapıcıyı çağırır.
FWIW; C# 6'da bu davranış değişecektir. C# 6 yapıları için [parametresiz yapıcılar] 'ı (https://roslyn.codeplex.com/discussions/562559) tanıtır; bu, 'new''in davranışının' default (T) '' den ne yapacağından farklı olmasını sağlar. – vcsjones
Varsayılan olarak (DateTime) 'ın programcının amacına daha açıklayıcı olduğu, dolayısıyla genellikle daha elverişli olduğu iddia edilebilir. –
@vcsjones, bununla birlikte C# 6.0'ın son sürümünden önce kaldırıldı. – nawfal
Cevap hayır. Her iki durumda da, mdDate.Kind = DateTimeKind.Unspecified
unutmayın.
nedenle aşağıdakileri yapmak daha iyi olabilir:
DateTime myDate = new DateTime(1, 1, 1, 0, 0, 0, DateTimeKind.Utc);
myDate.Kind
mülkiyet salt okunur, yani kurucu denir sonra değiştirilemez.
OP'nin sorusu nasıl? –
Lütfen cevabımın ilk 4 kelimesine bakın. –
Buna karşı iddia ediyorum. Varsayılan 'DateTime', 'default (DateTime) 'ile basit bir karşılaştırmayla bir değer ayarlanmamış değer olarak kullanışlıdır. Hangi kullanım varsayılan olmayan bir '01/01/0001' değeridir? – Rawling
Bir yöntemde bir DateTime parametresi için varsayılan değer kullanmak isterseniz, yalnızca varsayılan (DateTime) kullanabilirsiniz.
aşağıdaki satırı derlemek olmaz:
private void MyMethod(DateTime syncedTime = DateTime.MinValue)
Bu hat derlenir: ayrıca sadece `yapabileceği şekilde, DateTime.MinValue`` eşittir
private void MyMethod(DateTime syncedTime = default(DateTime))
Aradığım cevap buydu. Teşekkürler! – GigaKatowice
Tabii ki DateTime.MinValue derleme yapmıyor mu? İsteğe bağlı parametreler MinValue olmayan derleme zamanı sabitleri olmalıdır. default (DateTime) ve new DateTime() her ikisi de geçerlidir. (aslında DateTime x = default (DateTime) geçerli değil, çünkü DateTime değerleri derleme zamanı sabitleri olarak bildirilemez) –
DateTime myDate = DateTime .MinValue 'de:/ – Lloyd
@Lloyd Çoğu zaman ... ama varsayılan bir parametre olarak değil DateTime.MinValue bir derleme zaman sabiti değil - ancak varsayılan (DateTime)/yeni DateTime()' dir. – Ricibob
Sadece Ricibob'un mükemmel yorumunu açıklığa kavuşturmak yeterlidir, çünkü bu önemlidir: İsteğe bağlı bir parametre içeren bir yöntem oluşturuyorsanız, SADECE ya varsayılan (DateTime) 'veya' new DateTime() 'kullanabilirsiniz. Bunlar, isteğe bağlı parametre değerleri için gerekli olan * derleme zamanı sabitleridir *. Derleme zamanı sabitleri gerekli değilse, sonra varsayılan (DateTime) ',' yeni DateTime() 've' DateTime.MinValue' değiştirilebilir. – leanne