Hands on Labs ini menjelaskan perbedaan antara tipe data yang bertipe value (Value Type) dan tipe data referensi (Reference Type).
Contoh Value Type
1. Buka Visual Studio – pilih File – New Project, pilih Windows Form Application, beri nama “Chapter3” untuk nama projectnya
2. Kemudian
tambahkan tombol kedalam form, set property Text=’Value Type’, dan property
Name=’btnValue’.
3. Double
click pada tombol ‘btnValue’ untuk menambahkan kode berikut
private void btnValue_Click(object sender, EventArgs e) {
int bil1 = 12, bil2;
bil2 = bil1;
MessageBox.Show("Bil2 :
" + bil2.ToString());
bil2 = 23;
MessageBox.Show("Bil1 :
" + bil1.ToString());
}
4. Kemudian jalankan
programnya dengan menekan tombol F5.
5. MessageBox
pertama akan menampilkan “Bil2 : 12” karena variabel bil2 diisi dengan nilai
dari variable bil1
6. MessageBox
kedua akan menampilkan “Bil1 : 12” karena walaupun bil2 nilainya dirubah namun
bil1 tidak terpengaruh karena masing-masing variable mempunyai copy datanya
sendiri. Ini yang disebut sebagai value type.
Contoh Reference Type
1. Buka kembali project Chapter3 yang sudah anda buat.
2. Tambahkan sebuah button, set property Name=’ btnReference’ dan property Text=’ Reference Type’.
3. Untuk
membuat reference type, tambahkan class baru kedalam project. Caranya klik
kanan pada project di solution explorer – pilih Add – New Item – pilih Class –
beri nama ‘Mahasiswa.cs’. tambahkan kode berikut:
class Mahasiswa {
public string Nim { get; set; }
public string Nama { get; set; }
}
4. Kemudian
double click pada button ‘btnReference’ untuk menambahkan kode berikut:
private void btnReference_Click(object sender, EventArgs e) {
Mahasiswa mhs1 = new Mahasiswa();
mhs1.Nim = "22032321";
mhs1.Nama = "Erick";
Mahasiswa mhs2 = mhs1;
MessageBox.Show("Nama
Mahasiswa 2 :" + mhs2.Nama);
mhs2.Nama = "Andy";
MessageBox.Show("Nama Mahasiswa
1 :" + mhs1.Nama);
}
5. Jalankan
programnya dengan menekan tombol F5.
6. Ketika
program dijalankan MessageBox pertama akan mencetak “Nama Mahasiswa 2 : Erick”,
karena variable mhs2 dan mhs1 sama-sama mempunyai object referensi yang sama
(mhs2 = mhs1).
7. Kemudian
ketika mhs2.Nama diubah menjadi “Andy”, maka MessageBox kedua akan mencetak
“Nama Mahasiswa 1 : Andy”, karena mhs1 dan mhs2 mempunyai object referensi yang
sama, ketika salah satu nilai variable diubah maka akan mempengaruhi nilai
variable yang lain yang mereferensi object yang sama. Inilah yang disebut
sebagai reference type.
Local Type Inference
Hands On Labs ini membahas tentang Local Type
Inference, yaitu fitur baru pada C# 3.0. Local Type Inference mirip dengan
pendeklarasian variable dalam bahasa scripting seperti JavaScript. Dengan Local
Type Inference maka anda tidak perlu mendeklarasikan tipe data dari variable,
namun nilai variablenya harus langsung diberi nilai. Local Type Inference pada
C# menggunakan keyword var.
1. Buka
project ‘Chapter3’, kemudian tambahkan tombol baru kedalam Form, set property
Name=’btnInference’ dan property Text=’ Type Inference’.
2. Double
click pada tombol ‘btnInference’, kemudian tulis kode berikut:
private void btnInference_Click(object sender, EventArgs e) {
var bil1 = 12;
var nama = "Erick";
var cek = true;
var bil2 = 12.5;
var tanggal = new DateTime(2004, 04, 05);
MessageBox.Show(bil1.GetType().ToString());
MessageBox.Show(nama.GetType().ToString());
MessageBox.Show(cek.GetType().ToString());
MessageBox.Show(bil2.GetType().ToString());
MessageBox.Show(tanggal.GetType().ToString());
}
3. Pada kode
diatas dapat dilihat bahwa kita tidak perlu mendeklarasikan tipe data karena
compiler akan secara otomatis dapat menentukan tipe data berdasarkan nilai yang
masukan kedalam variabel tersebut.
4. Jalankan
programnya dengan menekan tombol F5.
Enumeration
Hands on Labs ini
membahas tentang tipe Enumeration pada C#.
1. Buka
project ‘Chapter3’ yang sebelumnya sudah kita buat.
2. Tambahkan
tombol kedalam Form, set property Name=’ btnEnumeration’ dan Text=’ Enumeration’.
3. Double
click pada tombol ’btnEnumeration’, kemudian tambahkan kode berikut:
enum Warna {
Merah,Hijau,Biru,Kuning,Ungu
}
private void btnEnumration_Click(object sender, EventArgs e) {
Warna enumWarna = Warna.Hijau;
switch (enumWarna) {
case Warna.Merah:
MessageBox.Show("Merah");
break;
case Warna.Hijau:
MessageBox.Show("Hijau");
break;
case Warna.Biru:
MessageBox.Show("Biru");
break;
}
}
4. Pada kode
diatas dapat dilihat bahwa enumeration adalah kumpulan konstanta yang nilainya
tetap, dan dapat digunakan untuk memudahkan pembacaan kode program dan biasanya
digunakan untuk input pilihan.
5. Jalankan
kodenya dengan menekan tombol F5.
Impicit vs Explicit Conversion
Hands on Labs ini
membahas tentang perbedaan dari Implicit Conversion dan Explicit Conversion
pada C#.
Implicit Conversion
A. Buka
project ‘Chapter3’ yang sudah anda buat sebelumnya.
B. Tambahkan
tombol kedalam Form, set property Nama = ‘btnImplicit’, Text = ‘Implicit
Conversion’.
C. Double click
pada tombol ‘Implicit Conversion’, kemudian tambahkan kode berikut:
int bil1 = 12;
float bil2 = bil1;
MessageBox.Show("Bilangan
2 : " + bil2.ToString());
D. Pada kode
diatas dapat dilihat bahwa konversi dari tipe data yang range nilainya lebih
kecil ke tipe data yang range nilainya lebih besar akan dilakukan secara
otomatis oleh compiler, dan tidak menghasilkan runtime error, ini yang disebut
dengan Implicit Conversion.
Explicit Conversion
A. Pada
tombol ‘btnImplicit’ tambahkan juga kode berikut:
float bil2 = 12.5f;
int bil1 = bil2;
MessageBox.Show("Bilangan
1 :" + bil1.ToString());
B. Kode
diatas akan menghasilkan runtime error karena konversi dari tipe data yang
range nilainya besar ke tipe data yang range nilainya kecil tidak dapat
dilakukan secara otomatis oleh compiler (implicit), jadi untuk ‘memaksa’
mengkonversikan dari tipe yang besar ke tipe yang lebih kecil anda harus
menggunakan explicit conversion yaitu casting.
C. Tulis kode
berikut untuk menggunakan casting
float bil2 = 12.5f;
int bil1 = (int)bil2;
MessageBox.Show("Bilangan
1 :" + bil1.ToString());
D. Kode
diatas akan berhasil dijalankan karena kita sudah menggunakan casting untuk
memaksa konversi dari tipe data float ke int, proses casting ini sering disebut
‘narrowing conversion’, nilai yang dimasukan kedalam int akan terpotong menjadi
‘12’ karena tipe int tidak dapat menampung tipe pecahan.
Boxing dan Unboxing
Hands on Labs ini
membahas tentang proses Boxing dan Unboxing, dan penggunaan Strongly Typed
Collection untuk mengatasi masalah performace degradation akibat proses Boxing
dan Unboxing.
1. Buka
project ‘Chapter3’ yang sudah anda buat sebelumnya.
2. Tambahkan
tombol kedalam Form, set property Name=’btnBoxing’, Text=’BoxingUnboxing’.
3. Tambahkan
namespace System.Collection karena kita akan menggunakan class ArrayList
using System.Collections;
4. Double
click pada tombol ‘btnBoxing’, kemudian tulis kode berikut:
private void btnBoxing_Click(object sender, EventArgs e) {
ArrayList arrBil = new ArrayList();
arrBil.Add(12);
arrBil.Add(32);
arrBil.Add(24);
for (int i = 0; i < arrBil.Count; i++) {
int bil = Convert.ToInt32(arrBil[i]);
MessageBox.Show(bil.ToString());
}
}
5. Kode
diatas menunjukan proses Boxing dan Unboxing yang terjadi ketika kita
menggunakan ArrayList, ketika kita menggunakan method ‘Add’ maka proses Boxing
terjadi yaitu dari value type (int) menjadi reference type (object). Pada
kalang for terjadi proses Unboxing yaitu dari reference type (object) menjadi
value type (int) lagi. Proses ini menyebabkan performa program menjadi lambat.
6. Pada C#
2.0 kita dapat menggunakan Strongly Typed Collection (Generic) untuk
mengatasi masalah ini. Anda disarankan
menggunakan collection List<T> (di dalam namespace
System.Collection.Generic) yang strongly typed daripada ArrayList karena
List<T> tidak menggunakan proses Boxing dan Unboxing.
7. Untuk
menggunakan List<T> tulis kode berikut:
private void btnBoxing_Click(object sender, EventArgs e) {
List<string> objNama = new List<string>();
objNama.Add("erick");
objNama.Add("wely");
objNama.Add("rully");
foreach (string nama in objNama) {
MessageBox.Show(nama);
}
}
Lihat yang lainnya juga yukk :)