Perbedaan paling penting antara kelas dan struct adalah bahwa kelas adalah tipe referensi, sedangkan struct adalah tipe nilai, dan alokasinya dalam memori berbeda.
Apa itu kelas?
kelas, konsep dasar dalam pemrograman berorientasi objek, adalah jenis struktur data kustom yang biasanya berisi bidang, atribut, metode, atribut, konstruktor, pengindeks, operator, dll. Di .NET, semua kelas pada akhirnya mewarisi dari kelas System.Object, sehingga mereka adalah jenis referensi, yaitu, ketika Anda memperbarui instans kelas, alamat instans tersebut dalam tumpukan terkelola disimpan di tumpukan, dan nilai instans disimpan dalam tumpukan terkelola.
Apa itu struktur?
Struct adalah jenis nilai yang digunakan untuk mengatur sekumpulan variabel terkait ke dalam satu entitas variabel. Semua struktur diwarisi dari kelas System.ValueType, jadi mereka adalah jenis nilai, yaitu, instance struct dibuat pada tumpukan tempat utas ditetapkan, dan menyimpan nilai itu sendiri. Jadi ketika menggunakan struct, kita dapat memperlakukannya sebagai kelas tipe dasar seperti int dan char.
1. class adalah jenis referensi, dan structs adalah jenis nilai
Karena class adalah jenis referensi, class dapat diatur ke null. Tetapi kita tidak dapat membuat struct null karena itu adalah jenis nilai.
2. Saat Anda membuat instance kelas, itu akan dibuat di tumpukan. Dan Anda membuat instance struct, yang akan dibuat pada tumpukan
3. Anda menggunakan referensi ke instance kelas. Dan Anda tidak menggunakan referensi ke struct. (alih-alih menggunakannya secara langsung)
4. Ketika kita meneruskan kelas sebagai argumen ke metode, kita meneruskan referensi. struct meneruskan nilai, bukan referensi.
5. Struct tidak dapat memiliki inisialisasi, kelas dapat memiliki inisialisasi.
6. Kelas dapat memiliki konstruktor tanpa parameter yang jelas, tetapi Struct tidak dapat
7. Kata kunci baru harus dibuat instance sebelum kelas digunakan, dan Struct tidak membutuhkannya
8. Kelas mendukung pewarisan dan polimorfisme, Struct tidak. Catatan: Tetapi Struct dapat mengimplementasikan antarmuka seperti kelas
9. Karena Struct tidak mendukung warisan, anggotanya tidak dapat dimodifikasi dengan Internal yang dilindungi atau dilindungi
10. Konstruktor Class tidak perlu menginisialisasi semua bidang, dan konstruktor Struct harus menginisialisasi semua bidang
11. Kelas dapat mendefinisikan destruktor, tetapi Struct tidak dapat
12. Class cocok untuk data besar dan kompleks, dan Struct cocok untuk jenis baru yang sering digunakan sebagai kombinasi dari beberapa data.
Kesempatan yang Berlaku: Struct memiliki keunggulan kinerja, dan Class memiliki keunggulan ekstensi berorientasi objek.
Jenis yang digunakan untuk penyimpanan data yang mendasarinya dirancang sebagai jenis Struct, dan jenis yang digunakan untuk menentukan perilaku aplikasi dirancang sebagai Kelas. Jika Anda tidak yakin tentang penerapan jenis tersebut di masa mendatang, Anda harus menggunakan Class. |