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

  • Atlantic Records

    Atlantic Rec

    15 Aralık 2006
  • Google Chrome

    Google Chrom

    1 EYLÜL 2008
  • REK Roth Productions

    REK Roth Pro

    8 Ocak 2011