Array Type Return Statement In Visual Basic 11

Posted at : Mar/22/2013
2275 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
IRKZ
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6982 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.