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. |