Thursday, June 07, 2007

Value Type dan Reference Type

Dalam C# dikenal dua jenis tipe data : value type dan reference type. Berikut ini merupakan penjelasan singkat dari masing-masing type.

Value Types
Variabel yang termasuk ke dalam value type berisi data itu sendiri. Melakukan assignment pada variabel value type ke variabel lain akan menyalin isi dari data yang berada didalamnya, sehingga jika nilai dari variabel yang pertama berubah, tidak akan mempengaruhi nilai data pada variabel yang kedua. Semua tipe data yang masuk ke dalam value types merupakan turunan dari kelas System.ValueType.

C# memiliki built-in value type yang diantaranya adalah sbyte, byte, char, short, ushort, int, uint, long, ulong, float, double, decimal, dan bool. Selain itu, semua enumerations dan structs termasuk ke dalam value type.

Berikut ini adalah beberapa karakteristik dari value type:

  • Disimpan di dalam stack, sehingga pada umumnya dapat diakses secara cepat
  • Dapat diakses secara langsung, tidak perlu menggunakan operator new untuk melakukan inisialisasi
  • Memiliki dua bentuk : boxed (bentuk value type dalam reference type, yang biasanya dianggap sebagai object) dan unboxed (bentuk asli dari value type)
  • Value type tidak berada dalam kontrol Garbage Collector
  • Memiliki karakteristik sealed, tidak dapat dibuat kelas turunan dari value type


Reference Types
Variabel yang bertipe reference type disisi lain tidak berisi data itu sendiri, melainkan berisi alamat yang menunjukkan lokasi di memori dimana data disimpan. Melakukan assignment pada variabel reference type ke variabel lain tidak akan mengkopi data isi variabel tersebut, tetapi hanya menyalin alamat memori yang menunjukkan lokasi isi variabel di memori. Jika data pada variabel pertama berubah, maka data pada varabel kedua pun akan berubah. Karena masing-masing variabel menunjuk ke data yang sama.

C# memiliki dua built-in reference type : string dan object. Sementara reference type yang dapat dibuat oleh programmer dapat berupa class, interface, dan delegate.

Berikut ini adalah karakteristik dari reference types:
  • Data reference type tidak disimpan pada stack, namun disimpan pada heap. Heap ini digunakan oleh Garbage Collector untuk melakukan alokasi memori secara dinamis.
  • Dua atau lebih variabel dengan tipe reference type dapat menunjuk ke satu objek yang sama dalam heap, memungkinkan operasi pada satu variabel mempengaruhi objek yang ditunjuk oleh variabel-variabel yang lain.
  • Pada umumnya reference types lebih besar dan lebih lambat daripada value types

1 comments:

Anonymous said...

Hehe..bener jg..0 comment so far :D

~komenGaPenting