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

  • humanHardDrive

    humanHardDri

    16 Mart 2011
  • Matthew Morrill

    Matthew Morr

    15 EKİM 2011
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007