MSDN belgelerinde, Microsoft C# derleyicinin struct
için kullandığı özel uygulama hakkında bilgi verilmektedir. Bu özel detaylar ECMA 334 C# spesifikasyonunda değildir; Onlar struct
s semantiğinin bir parçası değildir. Bu nedenle, dokümantasyondaki bu detaylar uygulama detaylarıdır.
Eric Lippert'in bir yerde okumayı hatırladığını düşünüyorum (ya da tercih ettiğine göre, hangi düzeyde tercih ettiğini hatırlamıyorum) belgelerin struct
s ile bağlantılı olarak yığından bahsetmemesini sağladı. Ben kazabilir miyim göreceğim. İşte
öyle, sen bağlı blog yazısı: Ben belgeleri en alakalı olanı odaklanmak olmadığını pişman
; Büyük ölçüde ilgisiz bir uygulama detayına odaklanarak, bu uygulama detayının önemini genişletiriz ve bir değer türünü neyin yararına yararlı kılan şeyin önemini gizleriz. “Yığın” ın ne demek olduğunu açıklayan tüm bu makalelerin, tam olarak “değere göre kopyalanan” anlamına geldiğini ve “yanlış değere göre kopyalamanın” yanlış anlaşılmasının ya da yanlış kullanımının hatalara neden olabileceğini açıklamak için zaman harcamasını diliyorum.
ECMA 334 C# belirtiminin ilgili bölümü §11'dir. "Yığın" kelimesinin bu bölümde hiç kullanılmadığını unutmayın. Bu bölüm sadece sözdizimini, struct
'un takip değeri semantiğini, örtük olarak mühürlendiğini ve System.ValueType
öğesinden devraldığını, struct
türünde bir değişkenin atama oluşturduğunu, bir kopyanın struct
değerini parametre olarak geçirerek bir kopyasını oluşturduğunu, struct
s (struct
tüm değer türü alanları varsayılan değerlerine ayarlanır ve tüm başvuru türü alanları null
ayarlanır) varsayılan değerlere nasıl ayarlandığını, boks ve struct
ait unboxing, struct
s için this
anlamını çevreleyen kurallar ve struct
s için saha başlatma, kurucular, yıkıcılar ve statik kurucular nasıl çalışır. Yine yığınlardan bahsedilmiyor. Hiç.
Yığın, bir uygulama detayıdır, struct
'un semantiklerinin bir parçası değildir.
soru ile ilgili: http://stackoverflow.com/questions/1970894/struct-what-is-it-for/1970902#1970902 –
Sadece bunu bir süre önce kopyaladım :) – RCIX