Array Type Return Statement In Visual Basic 11

.NET Framework , Posted at : Mar/22/2013  
1813 Views   3 Comments

Fitur Local Type Inference sudah dikenal di VB sejak versi 9.0. Dengan fitur tersebut variabel yang di deklarasikan tidak perlu diberikan tipe data secara eksplisit dengan syarat pemberian nilai pada variabel harus langsung diberikan pada saat variabel tersebut di deklarasikan. Tipe data dapat langsung dikenali berdasarkan jenis nilai yang diberikan. Hal tersebut juga akan berdampak pada penggunaan fungsi yang mengembalikan tipe data array dengan teknik inference diatas. VB 11 akan menghasilkan tipe data yang berbeda apabila dibandingkan dengan VB 9 atau VB 10.

Untuk lebih jelasnya mari kita buat contoh sederhana berikut ini.

Penggunaan di VB 9 atau VB 10

1. Buat sebuah console application dengan menggunakan Visual Studio 2010.

2. Ketikkan kode berikut ini di dalam Module1 :

    Private Function GroupNames(ByVal Genre As String) As Object()
        If Genre = "Rock" Then
            Return {"Mr.Big", "Extreme", "Van Halen"}
        Else
            Return {}
        End If
    End Function

3. Tambahkan kode berikut ini di dalam Sub Main:

    Sub Main()
        Dim type1 = GroupNames(Nothing).GetType.FullName
        Console.WriteLine(type1)

        Dim type2 = GroupNames("Rock").GetType.FullName
        Console.WriteLine(type2)

        Console.ReadLine()
    End Sub

4. Pada saat aplikasi tersebut dijalankan kita akan melihat hasilnya seperti pada gambar berikut ini:

 

Dari gambar di atas dapat dilihat bahwa tipe data array ditentukan oleh tipe data array yang di kembalikan secara “local type inference” di dalam fungsinya dan bukan sesuai dengan tipe data yang sudah di definisikan secara eksplisit terhadap fungsinya.

Tambahkan kode berikut ini di dalam Module1 diatas :

    Private Function GetKeyNumber(ByVal MaxNumber As Integer) As Integer()
        If MaxNumber <= 0 Then
            Return {}
        Else
            Return {1, 2, 3}
        End If
    End Function

Pada saat di kompilasi kode tersebut akan menghasilkan error seperti pada gambar dibawah ini:

Penjelasan pesan error tersebut sudah cukup jelas bukan? :)  Hasil yang berbeda akan kita dapatkan apabila semua kode diatas ditulis dengan menggunakan VB 11 dengan tools Visual Studio 2012, mari kita coba :)

 

Penggunaan di VB 11

1. Buat sebuah Console Application project dengan menggunakan Visual Studio 2012

2. Ketikkan semua kode di atas yang sudah ditulis dengan VB 10 dengan sedikit tambahan di dalam Sub Main :

    Private Function GroupNames(ByVal Genre As String) As Object()
        If Genre = "Rock" Then
            Return {"Mr.Big", "Extreme", "Van Halen"}
        Else
            Return {}
        End If
    End Function

    Private Function GetKeyNumber(ByVal MaxNumber As Integer) As Integer()
        If MaxNumber <= 0 Then
            Return {}
        Else
            Return {1, 2, 3}
        End If
    End Function

    Sub Main()
        Dim type1 = GroupNames(Nothing).GetType.FullName
        Console.WriteLine(type1)

        Dim type2 = GroupNames("Rock").GetType.FullName
        Console.WriteLine(type2)

        Dim type3 = GetKeyNumber(0).GetType.FullName
        Console.WriteLine(type3)

        Dim type4 = GetKeyNumber(3).GetType.FullName
        Console.WriteLine(type4)

        Console.ReadLine()
    End Sub

3. Pada saat di kompilasi dan dijalankan kita akan melihat hasilnya seperti pada gambar di bawah ini :

Sekarang timbul pertanyaan : “Loh kok hasilnya beda ya dengan VB 10 dan hasilnya juga ga error?” :)

VB 11 akan mengembalikan tipe data array sesuai dengan tipe data yang di deklarasikan secara eksplisit terhadap fungsinya, dan bukan sebagai hasil infering di dalam method seperti yang terjadi di VB 9 atau VB 10. Ok…mudah-mudahan penjelasan saya ini dapat dipahami :)


[Comments]
adi  Mar/22/2013 04:12:36 :

yap. mantap :D

request, perbanyak artikel yang membahas mengenai asp.net webform dan asp.net mvc :)

 

thanks

Fadly  Aug/20/2013 09:29:32 :

mantab Bro,, Rully.. Jangan pernah berhenti untuk menimba ilmu,,

Rully  Aug/23/2013 11:53:11 :

All > Thanks :)


[Write your comment]
Name (required)
Email (required-will not published)
 
Comment

ghir
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Microsoft Certified Trainer | IT Trainer at Native Enterprise | IT Consultant | Software Developer | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.
[Read More...]
Top Download 
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 6083 times  
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 4689 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 3554 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 3324 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 2706 times  
Links 
Certifications 
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News 
© Copyright 2006-2016   Rully Yulian MF   All rights reserved.