Bill Wagner'den Etkili C # okuyorum . In Madde 14 - Yinelenen Başlatma Mantık Minimize , o yeni opsiyonel parametreler yapıcı özelliğini kullanarak aşağıdaki örnek gösterir:
public MyClass(int initialCount = 0, string name = "")
Onun ""yerine kullandığına dikkat edin string.Empty.
O şöyle yorumluyor:
[Yukarıdaki bir örnekte], ikinci yapıcının daha alışılmış olan yerine , ad parametresindeki varsayılan değer için "" belirttiğine dikkat edin
string.Empty. Bunun nedenistring.Empty, derleme zamanı sabiti olmamasıdır. String sınıfında tanımlanan statik bir özelliktir. Derleme sabiti olmadığından, onu bir parametrenin varsayılan değeri için kullanamazsınız.
string.EmptyStatiği her durumda kullanamazsak, bu onun amacını bozmaz mı? Boş dizgeye atıfta bulunmak için sistemden bağımsız bir yolumuz olduğundan emin olmak için kullanacağımızı düşündüm. Anlayışım yanlış mı? Teşekkürler.
GÜNCELLEME
Sadece bir takip yorumu. MSDN'ye göre:
Her isteğe bağlı parametrenin tanımının bir parçası olarak varsayılan bir değeri vardır. Bu parametre için hiçbir bağımsız değişken gönderilmezse, varsayılan değer kullanılır. Varsayılan değerler sabit olmalıdır.
O zaman System.Environment.NewLineikisini de kullanamayız veya yeni örneklenmiş nesneleri varsayılan değerler olarak kullanamayız. Henüz VS2010 kullanmadım ve bu hayal kırıklığı yaratıyor!