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

  • pleated-jeans

    pleated-jean

    6 HAZİRAN 2013
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008
  • Tire Rack

    Tire Rack

    31 Mayıs 2007