SORU
1 Temmuz 2014, Salı


String.Biçim Değişkeni Hariç Null

Kod aşağıda Argümanı Null özel Durum oluşturur

var test = string.Format("{0}", null); 

Ancak, bu geri boş bir dize verecektir

string something  = null; 
var test = string.Format("{0}", something); 

Sadece merak kod, ikinci parça istisna değil neden bilmek. Bu bir hata mı ?

CEVAP
1 Temmuz 2014, Salı


Fark kodun ilk parça kodu ikinci parça string.Format(string, object) arama ise string.Format(string, object[])... arıyor.

null geçerli bir argüman için ikinci yöntem (sadece beklenen değer ilk yer tutucu) değil, ilk nerede null olur geneldediziyer tutucular). Özellikle NullArgumentException atıldığında belgelerine karşılaştırın:

string.Format(string, object):
biçiminull

Ama:

string.Format(string, object[]):
biçimiyabestennull

Uygulanmakta string.Format(string, object) düşünbir şeygibi:

public static string Format(string format, Object arg0)
{
    return string.Format(format, new object[] { arg0 } );
}

O yüzden yedek bir süre sonra, kodunuzu daha yakın

// Broken code
object[] args = null; // No array at all
var test = string.Format("{0}", args); 

// Working code
object[] args = new object[] { null }; // Array with 1 value
var test = string.Format("{0}", args); 

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Associated Press

    Associated P

    18 EYLÜL 2006
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009
  • tatermoog

    tatermoog

    2 AĞUSTOS 2006