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 null
her 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 x
bir 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 x
veri türüne dönüştürecektir int
. Derleyici int?
burada varsaymaz ve bu nedenle null
eklendiğ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.