Halo, ini adalah posting ketiga saya tentang fitur dari VB9 yaitu Anonymous type, anda dapat melihat posting saya sebelumnya:
- Implicitly typed local vaiable
- Object initializer
Anonymous type sebenarnya dibutuhkan untuk penggunaan fitur LINQ statements. Sintaks dari anonymous type mirip dengan sintaks object initializer
Sub Main()
Dim mhs = New With {.Nim = "22002321", .Ipk = 3.5}
Console.WriteLine(mhs.Nim)
Console.WriteLine(mhs.Ipk)
Console.WriteLine(mhs.ToString())
End Sub
Dapat anda lihat bahwa variabel mhs dapat digunakan dan berisi property Nim dan Nama padahal anda tidak membuat object Mahasiswa dari class Mahasiswa. Anda juga dapat menggunakan object mhs dari anonymous type untuk membuat object baru:
Dim mhs2 = New With {.Nim = mhs.Nim, .Nama = "Erick", .Ipk = mhs.Ipk}
Console.WriteLine(mhs2.ToString())
Jika anda membandingkan dua object yang sama yang dibuat dengan anonymous type
Dim mhs1 = New With {.Nim = "22002321", .Ipk = 3.5}
Dim mhs2 = New With {.Nim = "22002321", .Ipk = 3.5}
Console.WriteLine(mhs1.Equals(mhs2))
maka statement diatas akan mengahasilkan nilai false biarpun kedua object tersebut isinya sama persis. Hasilnya akan bernilai true hanya jika dibandingkan dengan referensi dari object itu sendiri
Dim mhs1 = New With {.Nim = "22002321", .Ipk = 3.5}
Dim mhs2 = mhs1
'menghasilkan nilai true
Console.WriteLine(mhs1.Equals(mhs2))
Ada fitur yang unik di VB9, yaitu anda dapat menggunakan keyword key jika anda ingin membandingkan nilai dari object tersebut sama atau tidak
'menggunakan keyword key
Dim mhs1 = New With {Key .Nim = "22002321", .Ipk = 3.5}
Dim mhs2 = New With {Key .Nim = "22002321", .Ipk = 3.5}
'menghasilkan nilai true
Console.WriteLine(mhs1.Equals(mhs2))
Dim mhs3 = New With {Key .Nim = "22002321", .Ipk = 3.5}
Dim mhs4 = New With {Key .Nim = "22002322", .Ipk = 3.4}
'menghasilkan false
Console.WriteLine(mhs3.Equals(mhs4))
Pada real world, anonymous types digunakan untuk mensupport LINQ statement, contohnya :
Dim mhs = From m In mahasiswa Select New With {m.Nim, m.Ipk}
menarik yaa…