1. Local Type Inference
-Merupakan fitur baru pada C# 3.0.
-mirip dengan pendeklarasian variabel pada bahasa scripting seperti JavaScript.
-Dengan Local Type Inference, Anda tidak perlu mendeklarasikan tipe data dari variabel, tapi nilai variabelnya harus langsung diberi nilai.
-Local Type Inference pada C# menggunakan Keyword var.
-Hanya berlaku di method scope
-Merupakan fitur baru pada C# 3.0.
-mirip dengan pendeklarasian variabel pada bahasa scripting seperti JavaScript.
-Dengan Local Type Inference, Anda tidak perlu mendeklarasikan tipe data dari variabel, tapi nilai variabelnya harus langsung diberi nilai.
-Local Type Inference pada C# menggunakan Keyword var.
-Hanya berlaku di method scope
Demo Program
1. Buat Project baru, kemudian buat form seperti berikut
Double klik btnInference, tambahkan code berikut
1. Buat Project baru, kemudian buat form seperti berikut
Double klik btnInference, tambahkan code berikut
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace TipeData2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnInference_Click(object sender, EventArgs e) { var bil1 = 1; var nama = "Arif"; var tanggal = new DateTime(1990, 05, 02); var cek = true; var bil2 = 1.0; MessageBox.Show(bil1.GetType().ToString()); MessageBox.Show(nama.GetType().ToString()); MessageBox.Show(tanggal.GetType().ToString()); MessageBox.Show(cek.GetType().ToString()); MessageBox.Show(bil2.GetType().ToString()); } } }
Jalankan Program, maka terlihat tipe data dari masing-masing nilai variabel
2. Enumeration
- merupakan kumpulan konstanta yg mempunyai nilai tetap
- memudahkan pembacaan kode
- digunakan sebagai input pilihan
Demo Program
- Tambahkan button btnEnumeration ke form aplikasi yg sudah dibuat.
- Double klik btnEnumeration, tambahkan code berikut:
enum Warna { Merah, Kuning, Biru }; private void btnEnumeration_Click(object sender, EventArgs e) { Warna enumWarna = Warna.Merah; switch (enumWarna) { case Warna.Merah: MessageBox.Show("this is red"); break; case Warna.Kuning: MessageBox.Show("this is yellow"); break; case Warna.Biru: MessageBox.Show("this is blue"); break; }
Jalankan program, dan lihat hasilnya
3. Konvesi Tipe Data - merubah satu tipe data ke tipe data lain
- ada 2 jenis konversi tipe data:
> Implicit Conversion
- Otomatis dikonversi
- Widening Conversion, yaitu konversi dari tipe data yang lebih kecil ke tipe data yang lebih besar –> No Problem .. Contoh: from int to long.
- Narrowing Conversion, yaitu konversi dari tipe data yang lebih besar ke tipe data yang lebih kecil –> Overflow Exception. Agar tidak terjadi error perlu menggunakan explicit conversion (casting).
> Explicit Conversion
- Convert Class (Convert.ToInt32(), Convert.ToDouble())
- sebagai keyword (untuk tipe yang kompatibel): string s = someObject as string;
- Casting: (string) someObject;
Demo Program
- Tambahkan btnConversion ke form aplikasi yang sudah dibuat
- Double klik btnConversion, tambahkan code berikut:
private void btnConversion_Click(object sender, EventArgs e) { int bil1 = 5; float bil2 = bil1; MessageBox.Show(bil2.ToString()); //implicit conversion float bil3 = 2.5f; int bil4 = (int)bil3; MessageBox.Show(bil4.ToString()); //casting (explicit conversion) }
Jalankan Program dan lihat hasilnya.
4. Boxing dan UnBoxing
- Boxing = tipe data value (value type) diubah menjadi tipe data objek (reference type)
- UnBoxing = tipe data objek (reference type) dikembalikan menjadi tipe data value (value type)
- Untuk melakukan boxing dibutuhkan konversi implicit atau explicit
- Untuk melakukan unboxing dibutuhkan koversi explicit
- Tidak disarankan penggunaan boxing dan unboxing karena menyebabkan penurunan performa program
Demo Program
- Tambahkan btnConversion ke form aplikasi yang sudah dibuat
- Double klik btnBoxing, Tambahkan namespace System.Collections karena kita akan menggunakan class ArrayList
Tambahkan juga code berikut
private void button1_Click(object sender, EventArgs e) { ArrayList arrBil = new ArrayList(); arrBil.Add(10); arrBil.Add(25); arrBil.Add(30); for (int i = 0; i < arrBil.Count; i++) { int bil = Convert.ToInt32(arrBil[i]); MessageBox.Show(bil.ToString()); } }
Hasil Program ketika dijalankan
Kode diatas menunjukkan proses Boxing dan UnBoxing ketika menggunakan ArrayList.
Pada saat menggunakan method ‘Add’, maka proses Boxing terjadi yaitu dari value type (int) menjadai reference type (objek). Pada kalang for terjadi Unboxing yaitu dari reference type (objek) menjadi value type (int) lagi. Proses tersebut menyebabkan performa program menjadi lambat.
Untuk mengatasi hal tersebut, pada C# versi 2.0 keatas, kita dapat menggunakan Strongly Typed Collection. Untuk pengganti Array List dapat menggunakan Collection List<T>
Contoh penggunaan List<T>
Kode diatas menunjukkan proses Boxing dan UnBoxing ketika menggunakan ArrayList.
Pada saat menggunakan method ‘Add’, maka proses Boxing terjadi yaitu dari value type (int) menjadai reference type (objek). Pada kalang for terjadi Unboxing yaitu dari reference type (objek) menjadi value type (int) lagi. Proses tersebut menyebabkan performa program menjadi lambat.
Untuk mengatasi hal tersebut, pada C# versi 2.0 keatas, kita dapat menggunakan Strongly Typed Collection. Untuk pengganti Array List dapat menggunakan Collection List<T>
Contoh penggunaan List<T>
private void button1_Click(object sender, EventArgs e) { ListobjNama = new List (); objNama.Add("Arif"); objNama.Add("Rohmadi"); foreach (string nama in objNama) { MessageBox.Show(nama); } }
referensi: geeks.netindonesia.net Labels: C#