Selasar Inspirasi

Tipe Data pada C# (Lanjutan)





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
Demo Program
1. Buat Project baru, kemudian buat form seperti berikut
image 
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 variabelimage

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.
image
- 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
image

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
image
- 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.
image 
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
image
- Double klik btnBoxing, Tambahkan namespace System.Collections karena kita akan menggunakan class ArrayList
image
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
image
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)
        {
            List objNama = new List();
            objNama.Add("Arif");
            objNama.Add("Rohmadi");

            foreach (string nama in objNama) {
                MessageBox.Show(nama);
            }
        }

referensi: geeks.netindonesia.net


0 Comments
Tweets
Comments

Responses

0 Respones to "Tipe Data pada C# (Lanjutan)"

Posting Komentar

 
Return to top of page Copyright © 2010 | Platinum Theme Converted into Blogger Template by HackTutors