Kelas adalah tipe Referensi dan Struktur adalah tipe Nilai.
Ketika saya mengatakan Kelas adalah tipe referensi,
pada dasarnya mereka akan berisi alamat variabel instan.
Sebagai contoh:
Class MyClass
{
Public Int DataMember; //By default, accessibility of class data members
//will be private. So I am making it as Public which
//can be accessed outside of the class.
}
Dalam metode utama,
saya dapat membuat turunan dari kelas ini menggunakan operator baru yang mengalokasikan memori untuk kelas ini
dan menyimpan alamat basis itu ke dalam variabel tipe MyClass (_myClassObject2).
Static Public void Main (string[] arg)
{
MyClass _myClassObject1 = new MyClass();
_myClassObject1.DataMember = 10;
MyClass _myClassObject2 = _myClassObject1;
_myClassObject2.DataMember=20;
}
Dalam program di atas, MyClass _myClassObject2 = _myClassObject1; instruksi menunjukkan bahwa kedua variabel tipe MyClass
- myClassObject1
- myClassObject2
dan akan menunjuk ke lokasi memori yang sama.
Ini pada dasarnya menetapkan lokasi memori yang sama ke dalam variabel lain dengan tipe yang sama.
Jadi jika ada perubahan yang kita buat pada salah satu objek, ketik MyClass akan memiliki efek pada yang lain
karena keduanya menunjuk ke lokasi memori yang sama.
"_myClassObject1.DataMember = 10;" pada baris ini kedua anggota data objek akan berisi nilai 10.
"_myClassObject2.DataMember = 20;" pada baris ini kedua anggota data objek akan berisi nilai 20.
Akhirnya, kita mengakses data dari suatu objek melalui pointer.
Tidak seperti kelas, struktur adalah tipe nilai. Sebagai contoh:
Structure MyStructure
{
Public Int DataMember; //By default, accessibility of Structure data
//members will be private. So I am making it as
//Public which can be accessed out side of the structure.
}
Static Public void Main (string[] arg)
{
MyStructure _myStructObject1 = new MyStructure();
_myStructObject1.DataMember = 10;
MyStructure _myStructObject2 = _myStructObject1;
_myStructObject2.DataMember = 20;
}
Dalam program di atas,
instantiate objek tipe MyStructure menggunakan operator baru dan
menyimpan alamat ke dalam variabel _myStructObject dari tipe MyStructure dan
menetapkan nilai 10 untuk anggota data struktur menggunakan "_myStructObject1.DataMember = 10".
Pada baris berikutnya,
saya mendeklarasikan variabel lain _myStructObject2 dari tipe MyStructure dan menugaskan _myStructObject1 ke dalamnya.
Di sini .NET C # compiler membuat salinan lain dari objek _myStructureObject1 dan
menetapkan lokasi memori itu ke dalam variabel MyStructure _myStructObject2.
Jadi perubahan apa pun yang kita buat pada _myStructObject1 tidak akan pernah berpengaruh pada variabel lain _myStructObject2 dari tipe MyStructrue.
Itu sebabnya kami katakan Struktur adalah tipe nilai.
Jadi kelas Base langsung untuk kelas adalah Object dan kelas Base langsung untuk Struktur adalah ValueType yang mewarisi dari Obyek.
Kelas akan mendukung Warisan sedangkan Struktural tidak akan.
Bagaimana kita mengatakan itu?
Dan apa alasan di balik itu?
Jawabannya adalah Kelas.
Itu bisa abstrak, disegel, statis, dan parsial dan tidak bisa pribadi, dilindungi dan dilindungi internal.