Terdapat 2 tipe data pada C#, yaitu tipe data value dan tipe data reference,
Tipe Data Value - disimpan pada stack memory
- non Garbage Collected
- Diturunkan dari System.ValueType namespace
- perubahan satu nilai pada variabel tidak berpengaruh pada nilai variabel yang lain
Yang termasuk tipe data value:
> Simple Types - signed: sbyte, short, int, long
- unsigned: byte, ushort, uint, ulong
- unicode characters: char
- floating point: float, double
- high precision: decimal
- boolean: bool
> Enum Types
- user defined type: enum e {….}
> Struct Types
- user defined type: struct {…}
Demo Program:
-Buat Project baru: File –> New Project –> Visual C# –> Windows Forms Application, beri nama TipeData -Buat Form seperti berikut
-Double klik Value Type, tambahkan kode sehingga menjadi seperti berikut
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace TipeData { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnValue_Click(object sender, EventArgs e) { int bil1 = 10, bil2; bil2 = bil1; MessageBox.Show(“bilangan 2: ”+ bil2.ToString()); bil2 = 25; MessageBox.Show(“bilangan 1: ”+ bil1.ToString()); } } }
Jalankan Program, dan lihat hasilnya
terlihat perubahan pada bil2 tidak berpengaruh pada bil1.
Tipe Data Reference - Dialokasikan di Heap Memory
- Garbage Collected
- Diturunkan dari System.Object namespace
- satu object dapat direferensi oleh lebih dari satu variabel
- Perubahan nilai pada object referensi yang sama akan mempengaruhi nilai pada object lainnya
Yang termasuk tipe data reference
> Class types
- base class dari semua class: Object
- unicode strings : string
- user defined typed: class C {…}
> Interface types
- user defined types: interface I {…}
> Array types
- single dan multidimensional : int[] dan int[,]
> Delegate types
- delegate TD {…}
Demo Program:
- Tambahkan 1 button baru ke form aplikasi yang sudah dibuat sebelumnya
- Buat class baru dengan nama mahasiswa: Klik kanan namespace TipeData –> Add Class –> beri nama Mahasiswa.cs
-Tambahkan code berikut pada Mahasiswa.cs (untuk mempercepat pembuatan property, dapat memanfaatkan fitur automatic property yang ada pada .NET Framework versi 3 keatas (ketik prop + tombol tab)).
using System; using System.Collections.Generic; using System.Text; namespace TipeData { class Mahasiswa { public string nim { get; set; } //memanfaatkan fitur automatic property public string nama { get; set; } } }
- Double klik tombol btnReference, tambahkan code berikut:
private void btnReference_Click(object sender, EventArgs e) { Mahasiswa mhs1 = new Mahasiswa(); mhs1.nim = "M0508042"; mhs1.nama = "Gilang Romadhon Aprianto"; Mahasiswa mhs2 = mhs1; MessageBox.Show("Nama Mahasiswa 2: "+mhs2.nama); mhs2.nama = "Arif Rohmadi"; MessageBox.Show("Nama Mahasiswa 1: "+mhs1.nama); }
Jalankan Program, dan lihat hasilnya
Terlihat perubahan nilai pada pada mhs2.nama berpengaruh terhadap mhs1.nama karena keduanya mengacu pada object referensi yang sama.
Referensi
geeks.netindonesia.net
Labels: C#