SORU
23 NİSAN 2010, Cuma


Olamaz Dize kullanın.İsteğe bağlı bir parametre için varsayılan değer olarak boş

OkuyorumEtkili C#Bill Wagner tarafından.Madde 14 - En Aza İndirmek Başlatma Mantığı Yinelenenbir oluşturucu yeni isteğe bağlı parametreleri özelliğini kullanarak aşağıdaki örnek gösterir:

public MyClass(int initialCount = 0, string name = "")

string.Empty yerine "" kullanmış dikkat edin.
O yorumlar

İkinci kurucu belirtilen [bir örnek yukarıda] dikkat edeceğiz", " varsayılan değer içinadıparametre yerine daha geleneksel ve string.Empty. O string.Empty derleme zamanı sabiti değil çünkü. Statik bir özellik string sınıfı içinde tanımlanmış. Bir derleme sabit olduğundan, bir parametre için varsayılan değeri kullanın.

Eğer tüm durumlarda string.Empty statik kullanamayız, o zaman bu amacı yenilgi değil mi? Boş dize söz sistemden bağımsız bir anlamı yok olduğundan emin olmak için düşündüm. Benim anladığım yanlış mı? Teşekkürler.

GÜNCELLEME
Sadece yorum takip. Senior:

Her isteğe bağlı parametre tanımının bir parçası olarak bir varsayılan değeri vardır. Hiçbir tartışma bu parametre gönderilirse, varsayılan değer kullanılır.Varsayılan değerler sabitler olmalıdır.

System.Environment.NewLine ya kullan, ya da varsayılan değer olarak yeni oluşturulmuş nesneleri kullanabiliriz değil mi. Henüz VS2010 kullanmadım, ve bu hayal kırıklığı yaratıyor!

CEVAP
25 ŞUBAT 2012, CUMARTESİ


Eğer gerçekten isteğe bağlı parametre bir değer olarak kullanmak istiyorsanız, boş bir dize için kendi sabit tanımlama engelleyecek bir şey yok:

const string String_Empty = "";

public static void PrintString(string s = String_Empty)
{
    Console.WriteLine(s);
}

[Bir kenara, bir nedeni tercih String.Empty "" genel olarak bu değildi bahsedilen diğer cevapları ise çeşitli Unicode karakterleri (sıfır genişlik marangozlar, vb.) çıplak gözle etkin bir şekilde görünmez. "" gibi görünen bir şey mutlaka boş bir dize değil, String.Empty ile ise tam olarak ne kullandığını biliyorsun. Bu hataların ortak bir kaynak değil farkındayım, ama mümkündür.]

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dellbear816

    Dellbear816

    4 Mart 2008
  • Ordetta Price

    Ordetta Pric

    12 EYLÜL 2011
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011