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

  • Anthony Le

    Anthony Le

    10 EKİM 2006
  • ElChakotay Andrich

    ElChakotay A

    10 EKİM 2013
  • jeffisthecoolguy

    jeffisthecoo

    17 HAZİRAN 2013