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

  • Break

    Break

    10 Aralık 2005
  • Microsoft Help & Training Videos

    Microsoft He

    31 Mart 2009
  • Missouri Star Quilt Company

    Missouri Sta

    18 ŞUBAT 2009