Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 22710|Yanıt: 0

[Kaynak] C#'da yapı ile sınıf arasındaki fark

[Bağlantıyı kopyala]
Yayınlandı 24.06.2016 11:53:06 | | |
Sınıf ile struct arasındaki en temel fark, sınıfın bir referans tipi olması, struct'in ise bir değer tipi olması ve onların bellekteki tahsisinin farklı olmasıdır.

Sınıf nedir?

Sınıf, nesne yönelimli programlamada temel bir kavram olan olup, genellikle alanlar, nitelikler, yöntemler, nitelikler, yapıcılar, indeksleyiciler, operatörler vb. içeren özel veri yapısı türüdür. .NET'te tüm sınıflar nihayetinde System.Object sınıfından miras alır, yani bir referans tipi olurlar; yani bir sınıfın örneğini yenilediğinizde, yönetilen yığında o örneğin adresi yığında saklanır ve örnek değeri yönetilen yığında saklanır.

Struct nedir?

Struct, ilgili değişkenler kümesini tek bir değişkenli varlık içinde düzenlemek için kullanılan bir değer türüdür. Tüm yapılar System.ValueType sınıfından miras alınır, bu nedenle değer tipi olur; yani yapı örneği, iş parçacığı atanan yığın üzerinde oluşturulur ve değeri kendisi saklar. Yani struct kullanıldığında, onu int ve char gibi temel bir tür sınıfı olarak ele alabiliriz.



1. sınıf referans tipidir ve yapılar değer tipidir

Sınıf bir referans tipi olduğundan, sınıf null olarak ayarlanabilir. Ama struct'u null yapamayız çünkü bu bir değer türü.




2. Bir sınıfı başlattığınızda, yığın üzerinde oluşturulur. Ve bir struct oluşturuyorsunuz, bu da stack üzerinde oluşturulacak

3. Bir sınıf örneğine referans kullanıyorsunuz. Ve bir yapıya referans kullanmıyorsunuz. (bunun yerine doğrudan kullanın)

4. Sınıfı bir yönteme argüman olarak verdiğimizde, bir referans veririz. Struct bir değer geçirir, referans değil.

5. Yapıların başlatıcıları olamaz, sınıflar başlatıcıya sahip olabilir.





6. Sınıfların belirgin parametresiz yapıcıları olabilir, ancak yapılar yapamaz





7. Yeni anahtar kelime, sınıf kullanılmadan önce oluşturulmalıdır ve Struct buna ihtiyaç duymaz




8. Sınıf, kalıtımı ve polimorfizmi destekler, Struct ise desteklemez. Not: Ama Struct, sınıflar gibi arayüzleri de uygulayabiliyor

9. Struct mirası desteklemediğinden, üyeleri korunan veya korunan İç ile değiştirilemez

10. Class yapıcısının tüm alanları başlatması gerekmez, Struct yapıcısı ise tüm alanları başlatmak zorundadır







11. Sınıf bir yıkıcıyı tanımlayabilir, ancak Struct tanımlayamaz

12. Sınıf, büyük ve karmaşık veriler için uygundur, Struct ise genellikle bazı verilerin kombinasyonu olarak kullanılan yeni türler için uygundur.



Uygulanabilir Durumlar: Struct'un performans avantajları vardır, Class ise nesne yönelimli genişletme avantajlarına sahiptir.

Altta yatan veri deposu için kullanılan tip Struct tipi olarak tasarlanmıştır ve uygulama davranışını tanımlamak için kullanılan tip bir Sınıf olarak tasarlanmıştır. Türün gelecekteki uygulamasından emin değilseniz, Class kullanmalısınız.




Önceki:Alipay RSA özel anahtarı ve açık anahtarla tek tıklama oluşturma aracı
Önümüzdeki:C# bir MySQL yardım sınıfını tersine çevir, kaydet
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com