SORU
14 Aralık 2012, Cuma


Neden geçen " bir istisna;boş" sabit olsun ama "boş" geçerken; string referans olmaz mı?

Ben bu kodu çalıştırın:

Console.WriteLine( String.Format( "{0}", null ) );

ArgumentNullException ama eğer bu kaçarsam bir kod alıyorum:

String str = null;
Console.WriteLine( String.Format( "{0}", str ) );

gayet güzel çalışır ve çıktı boş bir dize.

Şimdi iki parça bana denk bak - ikisi de String.Format() içine boş bir başvuru pass henüz farklı bir davranıştır.

Kimliği nasıl farklı davranış burada mümkün mü?

CEVAP
14 Aralık 2012, Cuma


Sadece koda neler çalışmak için kodu.

string.Format("{0}", null)

aramalar en çoközelstring.Format(string, object[]) geçerli olan yük.

string.Format aşırı yükleme:

Format(String, Object)
Format(String, Object[])
Format(IFormatProvider, String, Object[])
Format(String, Object, Object)
Format(String, Object, Object, Object)

Umarım son üç seçenek geçersizdir neden açıktır.

Hangi iş için, derleyici Object[] null dönüştürme Object 14 *dönüştürme karşılaştırır. Object[] dönüştürme" Object Object[] bir dönüşüm var ama tersi çünkü. "iyi sayılır Bu eğer olsaydı hangi ile aynı mantık

Foo(String)
Foo(Object)

Foo(null) denilen Foo(String) tercih ederdim.

Bu yüzden orijinal kodu eşdeğerdir:

object[] values = null;
string.Format("{0}", values);

Bu noktada, umarımbekliyoruzbir 25* * - belgelere göre.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andyabc45

    andyabc45

    1 Mayıs 2011
  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008