Fitur VB9 (Object initializer)

Halo, ini adalah posting kedua saya tentang fitur dari VB9 yaitu Object initializer, anda dapat melihat posting saya sebelumnya:

  • Implicitly typed local vaiable

Ketika anda menggunakan VB8 dan bekerja dengan class, dan ingin melakukan inisialisasi variabel dalam class maka anda harus membuat oveloading constructor, atau harus menuliskan code yang cukup panjang untuk menginisialisasi property satu-persatu, secagai contoh:

Class Mahasiswa
    Private _nim As String
    Private _ipk As Single
 
    Public Property Nim() As String
        Get
            Return _nim
        End Get
        Set(ByVal value As String)
            _nim = value
        End Set
    End Property
 
    Public Property Ipk() As Single
        Get
            Return _ipk
        End Get
        Set(ByVal value As Single)
            _ipk = value
        End Set
    End Property
End Class

Kemudian untuk membuat object dan menginisialisasi class tersebut lakukan:

Sub Main()
    'inisialisasi object biasa
    Dim mhs1 As New Mahasiswa()
    mhs1.Nim = "22002321"
    mhs1.Ipk = 3.5
 
    'atau dapat ditulis
    Dim mhs2 As New Mahasiswa()
    With mhs2
        .Nim = "22002321"
        .Ipk = 3.5
    End With
End Sub

dengan menggunakan Object initializer anda dapat menuliskannya sebagai berikut:

'dengan menggunakan object initializer
Dim mhs3 As New Mahasiswa() With {.Nim = "22002321", .Ipk = 3.5}

Lebih praktis bukan hehehe..

Fitur VB9 (Implicitly typed local variabel)

Halo, selamat datang di posting pertama saya mengenai fitur VB9, pada artikel ini saya akan membahas “Implictly typed local variabel” pada VB9.

Untuk mendeklarasikan variabel pada VB8 (.NET 2.0) anda dapat menuliskan kode sebagai berikut:

image 

Ketika saya menuliskan deklarasi variable diatas, saya merasa deklarasi tersebut terlalu panjang, karena ketika kita memberikan nilai 999 atau “Erick” maka compiler seharusnya bisa tahu tipe data yang dimasukan kedalam variabel tersebut. Bagaimana jika ditulis seperti ini saja

image

lebih praktis bukan? namun pada VB8 jika ada mendeklarasikan variable seperti diatas maka compiler secara otomatis akan merubah tipenya menjadi tipe “object” / mengganggapnya sebagai “late binding” (option strict = off).

image

Ini akan sangat tidak efektif karena compiler melakukan proses “boxing” dan “unboxing” untuk merubah dari tipe string ke object, object ke string.

Pada VB9 diperkenalkan satu option baru yaitu “Option infer”, dengan mengaktifkan option ini menjadi “on” maka compiler secara otomatis dapat menebak tipe data apa yang dimiliki oleh variabel dari nilai yang kita berikan di sisi kanan. Secara default VB9 mengaktifkan pilihan option infer “on” atau anda juga dapat menuliskannya secara eksplisit pada kode.

image

image

Jika anda cek lagi tipe data dari variable yang ada di sisi kiri, maka tipe datanya akan secara otomatis menyesuaikan dengan nilai yang anda berikan disisi kanan.

image

image

Jika anda tidak mengeset option infer menjadi off maka otomatis tipe akan diubah menjadi object (late binding) seperti pada VB8.

Fitur-fitur Keren VB9

Pada artikel berseri kali ini saya akan membahas fitur-fitur baru nan kereen dari VB9 (.NET 3.0), biarpun VB sering dianggap sebagai “anak tiri” di platform .NET jika dibandingkan dengan saudaranya C# namun mulai VB9 ada beberapa fitur yang membuat programmer VB merasa lebih baik daripada programmer C# (seperti XML Literal dan Late Bound XML misalnya).

Menurut saya VB merupakan bahasa yang unik karena beda dengan bahasa yang lain, misal C#, Java yang termasuk “strongly typed language”, dan Ruby, Phyton, PHP yang “dynamic typed language” maka VB berada ditengah-tengahnya “semi strongly type dan dynamic”, menurut Erik Meijer salah seorang Arsitek VB Team dari Microsoft VB mempunyai mantra yaitu “Static Typing Where Possible, Dynamic Typing When Needed“, dengan demikian programmer VB dapat menggunakan static typing maupun dynamic typing sesuai dengan kebutuhan.

Pada artikel kali ini saya akan mencoba membahas beberapa fitur dari VB9 yaitu:

  • Implicitly typed local variabel
  • Object Initializer
  • Anonymous types
  • Nullable types
  • If Tenary operator
  • Partial Method
  • Extension methods
  • Relaxed delegates
  • LINQ Queries
  • Lambda Expression
  • Expression Tree
  • Friend Assembly
  • Runtime Agility

Dengan senjata-senjata hebat yang ditambahkan di VB9, maka VB menjadi bahasa yang bisa bersaing dengan bahasa popular lain seperti C# atau Java. salam VB :)