Biri bu tartışma dizisinde yoktan bir dizi oluşturamayacağınızı söyledi .
(ki bu düşündüğüm gibi güzel bir ifade). Ama evet - aşağıdaki örnekte gösterildiği gibi :-) yapabilirsiniz :
var x = null + (string)null;
var wtf = x.ToString();
iyi çalışıyor ve hiç bir istisna oluşturmuyor. Tek fark, boş değerlerden birini bir dizeye çevirmeniz gerekmesidir - (string) dönüşümünü kaldırırsanız , örnek yine derlenir, ancak bir çalışma zamanı istisnası atar: "Operatör '+', işlenenler üzerinde belirsizdir. '<boş>' ve '<boş>' "yazın.
NB Yukarıdaki kod örneğinde, beklediğiniz gibi x'in değeri boş değildir, işlenenlerden birini bir dizeye dönüştürdükten sonra aslında boş bir dizedir.
Bir başka ilginç gerçek de, C # / .NET'te farklı veri türlerini dikkate alırsanız işlenme şeklinin nullher zaman aynı olmamasıdır. Örneğin:
int? x = 1; // string x = "1";
x = x + null + null;
Console.WriteLine((x==null) ? "<null>" : x.ToString());
Regard 1 satır kod parçasındaki: Eğer xbir null tamsayı değişkendir (yani int?) değerini içeren 1, o zaman sonuç alıyoruz <null>geri. Değer içeren bir dizeyse (yorumda gösterildiği gibi) "1", o zaman "1"yerine geri dönüyorsunuz <null>.
Not Ayrıca ilginç: var x = 1;İlk satırı kullanıyorsanız, bir çalışma zamanı hatası alıyorsunuz. Neden? Çünkü atama, değişkeni null yapılamayan xveri türüne dönüştürecektir int. Derleyici int?burada varsaymaz ve bu nedenle nulleklendiği 2. satırda başarısız olur .
null.ToString()adın verilmesini garip buluyorumwtf. Bu seni neden şaşırttı? İlk başta çağıracak hiçbir şeyiniz olmadığında bir örnek yöntemi çağıramazsınız.