Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu içerik, Çerçeve Tasarım Yönergeleri: Kurallar, Deyimler ve Yeniden Kullanılabilir .NET Kitaplıkları için Desenler, 2. Sürüm'den Pearson Education, Inc.'in izniyle yeniden yazdırılır. Bu baskı 2008'de yayımlandı ve kitap o zamandan beri üçüncü baskıda tamamen revize edilmiştir. Bu sayfadaki bazı bilgiler güncel olmayabilir.
Her çerçeve tasarımcısının karşılaştığı temel tasarım kararlarından biri, bir türü sınıf (başvuru türü) veya yapı (değer türü) olarak tasarlamaktır. Başvuru türlerinin ve değer türlerinin davranışındaki farklılıkların iyi anlaşılması, bu seçimin yapılmasında çok önemlidir.
Başvuru türleri ile değer türleri arasındaki ilk fark, başvuru türlerinin yığında yer alması ve çöp toplanması ile ilgilidir; değer türleri ise ya yığında ya da onları içeren türlerin içinde satır içi yerleştirilir ve yığın açıldığında veya içerdikleri tür serbest bırakıldığında serbest bırakılır. Bu nedenle, değer türlerinin tahsisleri ve geri alınmaları, genel olarak başvuru türlerinin tahsislerinden ve geri alınmalarından daha ucuzdur.
Daha sonra, başvuru türü dizileri ana bellekte bağımsız olarak tahsis edilir, yani dizi öğeleri yalnızca yığında bulunan başvuru türü örneklerine referanstır. Değer türü dizileri satır içinde ayrılır, yani dizi öğeleri değer türünün gerçek örnekleridir. Bu nedenle, değer türü dizilerinin ayırmaları ve serbest bırakmaları, başvuru türü dizilerinin ayırmalarından ve serbest bırakmalarından çok daha ucuzdur. Buna ek olarak, çoğu durumda değer türü dizileri başvurunun çok daha iyi bir yerelliğini sergiler.
Bir sonraki fark bellek kullanımıyla ilgilidir. Değer türleri, bir başvuru türüne veya uyguladıkları arabirimlerden birine dönüştürüldüğünde kutulanır. Değer türüne geri döndürüldüğünde, kutudan çıkarma işlemi gerçekleşir. Kutular yığında ayrılan ve atık toplanmış nesneler olduğundan, çok fazla kutulama ve kutu açmanın yığın, çöp toplayıcı ve sonuçta uygulamanın performansı üzerinde olumsuz bir etkisi olabilir. Buna karşılık, referans türleri dönüştürüldüğünden böyle bir kutulama gerçekleşmez. (Daha fazla bilgi için bkz . Kutulama ve Kutu açma).
Ardından, başvuru türü atamaları başvuruyu kopyalarken, değer türü atamaları değerin tamamını kopyalar. Bu nedenle, büyük başvuru türlerinin atamaları, büyük değer türlerinin atamalarından daha ucuz olur.
Son olarak, referans türleri referans ile geçirilirken, değer türleri değer ile geçirilir. Bir başvuru türünün örneğinde yapılan değişiklikler, örneğe işaret eden tüm başvuruları etkiler. Değer türü örnekleri, değer olarak aktarıldığında kopyalanır. Bir değer türünün bir örneği değiştirildiğinde, elbette bu durum kopyalarından hiçbirini etkilemez. Kopyalar kullanıcı tarafından açıkça oluşturulmadığından ancak bağımsız değişkenler geçirildiğinde veya döndürülen değerler döndürildiğinde örtük olarak oluşturulduğundan, değiştirilebilen değer türleri birçok kullanıcı için kafa karıştırıcı olabilir. Bu nedenle, değer türleri sabit olmalıdır.
Genel bir kural olarak, bir çerçevedeki türlerin çoğunluğu sınıf olmalıdır. Ancak, bir değer türünün özelliklerinin yapıların kullanılmasını daha uygun hale getirmesi gibi bazı durumlar vardır.
✔️ Türün örnekleri küçük ve genellikle kısa ömürlüyse veya genellikle diğer nesnelere eklenmişse sınıf yerine bir yapı tanımlamayı göz önünde bulundurun.
❌ Türün aşağıdaki özelliklerin tümüne sahip olmadığı sürece bir yapı tanımlamaktan KAÇıNıN:
Mantıksal olarak ilkel türlere (
int
,double
vb.) benzer şekilde tek bir değeri temsil eder.16 bayt'ın altında bir örnek boyutuna sahiptir.
Bu sabit.
Sık sık kutulanması gerekmez.
Diğer tüm durumlarda, türlerinizi sınıf olarak tanımlamanız gerekir.
Porsiyonlar © 2005, 2009 Microsoft Corporation. Tüm hakları saklıdır.
Pearson Education, Inc. tarafından Krzysztof Cwalina ve Brad Abrams'ın Yeniden Kullanılabilir .NET Kütüphaneleri için Çerçeve Tasarım Yönergeleri: Sözleşmeler, Deyimler ve Kalıplar, 2. Baskı eserinden izniyle yeniden basılmıştır. Addison-Wesley Professional tarafından Microsoft Windows Geliştirme Serisi kapsamında 22 Ekim 2008'de yayımlanmıştır.