2012-01-04 13 views

cevap

15

0 dolaylı bir nesne (kutu) dönüştürülür bir int, ve kısa bir doğrudan bir kutulu int Unbox olamaz çünkü. Bu çalışır:

short s = (short)(int)(nullObj ?? 0); 

bir T kutulu (T tabii olmayan bir NULL değer türüdür) Sadece T veya T? kutulamasının edilebilir.

+2

[Temsil ve Kimlik] (http://blogs.msdn.com/b/ericlippert/archive/2009/03/19/representation-and-identity.aspx) bunun neden gerekli olduğunu açıklıyor (örneğin, neden bu değil? sadece 1 döküm ile otomatik olarak yapılmaz). Kırmızı ringa belirtmek için – Brian

5

Son satırdaki null-coalescing operatörünün sonucu bir kutulu int'dur. Daha sonra, gösterme biçiminizde yürütme süresinde başarısız olan short numaralı kutuyu kaldırmaya çalışıyorsunuz. Bunu yaptıktan gibi

Bu açıklanmıştır: null coalescing operatörünün

object x = 0; 
short s = (short) x; 

burada bulunmanızın kırmızı ringa biraz olduğunu.

+2

+ 1. – phoog

İlgili konular