2009-07-30 3 views

cevap

12

Temel olarak, değer-tipi semantik ile muamele edilir

herhangi struct (ValueType miras yani şey) p'dir bir dolandırıcı. Ancak, gerektiğinde boks dönüşüm - object vardır; struct'u object'a gönderirseniz, verilerinizden (klon olarak) veriyi içeren özel bir nesne (yönetilen yığında) oluşturacaktır.

Kutulu sürüm bir referans türüdür. Bunu (döküm ederek) struct sürümüne geri yükleyebilir, bu da bunu tersine çevirir (klon verilerinizi yığın üzerindeki nesneden yerel değerinize kopyalar).


* = boş bir Nullable<T>, olmadıkça null hangi kutular; Aynı şekilde, null boş bir Nullable<T> ürününü kutusundan çıkarır.

+0

Büyüyü (aldatmanın) nasıl gerçekleştiğine dair bir bağlantıyı açıklayabilir misiniz? Yani, Yapı, değer referansı iken, – skjagini

+0

@ skjagini nesne referans tipi iken, derleyici ve çalışma zamanı, 'ValueType' türetilen bir şeyin kolayca fark edilebildiği ve farklı bir şekilde ele alınabileceği bir değerdir ... Bunun ötesinde? ECMA335 –

+0

+1 C# gibi dilleri kutsanmış bir yapının bir değer türü olduğunu iddia etse de, CLR'nin bağırsakları içinde her yönetilen değer türü, karşılık gelen değer türünün bir alanını kapsülleyen karşılık gelen bir sınıf tipine sahiptir ve tüm üyeleri bu alan. C# dil özelliği böyle bir şeyi bir değer türü olarak çağırsa bile, bir referans türü olarak davranacaktır. – supercat