Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

14.4. Array Initializers - Local Type Inference

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

In Visual Basic 2008 (9.0) hadden we reeds de optie door middel van local type inference (onder Option Infer On) type specifiers (As clausule) weg te laten in de declaraties van lokale variabelen, waar een toekennings clausule aan is toegevoegd, om toch strongly type variabelen (variabelen van een ander type dan Object) te bekomen :
Visual Basic 2012 Broncode - Codevoorbeeld 370
Option Infer On
Namespace VisualBasic2008
    Module Example1
        Sub Main()
            Dim a = 1
            Dim b = ""
        End Sub
    End Module
End Namespace
Zo wordt variabele a door de compiler beschouwd als een variabele van het type Integer, net alsof we expliciet dit type hadden aangegeven (Dim a As Integer = 1).
De compiler kan dit type afleiden van het datatype van de expressie die wordt gebruikt om de initialisatie waarde voor te stellen.  Expressie 1 is immers een Integer literal.
Variabele b wordt in bovenstaande code beschouwd als een String variabele.

Local type inference was echter in Visual Basic 2008 (9.0) nog niet mogelijk indien men in de toekennings clausule array initializers gebruikt.
Voorbeelden van array initializers zijn {1.11, 2.22, 3.33} en {{1, 2, 3}, {4, 5, 6}}.
Sterker nog het was helemaal niet mogelijk het datatype van lokale variabelen, die aan de hand van array initializers worden geïnitialiseerd weg te laten :
Visual Basic 2012 Broncode - Codevoorbeeld 371
Namespace VisualBasic2008
    Module Example2
        Sub Main()
            Dim c As Double() = {1.11, 2.22, 3.33}
            Dim d As Integer(,) = {{1, 2, 3}, {4, 5, 6}}
        End Sub
    End Module
End Namespace
In de declaraties van de variabelen c en d zijn de type specifiers As Double() en As Integer(,) hier dus vereist.

Herinner je dat bovenstaande initializers een verkorte notatie zijn voor New Double() {1.11, 2.22, 3.33} en New Integer(,) {{1, 2, 3}, {4, 5, 6}} :
Visual Basic 2012 Broncode - Codevoorbeeld 372
Namespace VisualBasic2008
    Module Example3
        Sub Main()
            Dim c As Double() = New Double() {1.11, 2.22, 3.33}
            Dim d As Integer(,) = New Integer(,) {{1, 2, 3}, {4, 5, 6}}
        End Sub
    End Module
End Namespace
Indien de volledige notatie wordt gebruikt kunnen we de As clausules in de declaraties van de variabelen wel weglaten :
Visual Basic 2012 Broncode - Codevoorbeeld 373
Namespace VisualBasic2008
    Module Example4
        Sub Main()
            Dim c = New Double() {1.11, 2.22, 3.33}
            Dim d = New Integer(,) {{1, 2, 3}, {4, 5, 6}}
        End Sub
    End Module
End Namespace
In Visual Basic 10.0 (2010) is het nu mogelijk onder local type inference dergelijke type specifiers weg te laten, zelfs bij de verkorte notatie :
Visual Basic 2012 Broncode - Codevoorbeeld 374
Option Infer On
Namespace VisualBasic2010
    Module Example1
        Sub Main()
            Dim c = {1.11, 2.22, 3.33}
            Dim d = {{1, 2, 3}, {4, 5, 6}}
        End Sub
    End Module
End Namespace
Deze array initializers zorgen er in Visual Basic 10.0 (2010) voor dat de variabele c en d strongly type zijn, en dus worden gedeclareerd van de types Double() en Integer(,).

De verkorte array initializers zijn nu volwaardige expressies, zo kunnen ze in Visual Basic 10.0 (2010) overal, waar een expressie wordt verwacht van het type waarnaartoe ze inferred worden, worden gebruikt :
Visual Basic 2012 Broncode - Codevoorbeeld 375
Namespace VisualBasic2010
    Module Example2
        Function GetIntegerArray() As Integer()
            Return {1, 2, 3}
        End Function
    End Module
End Namespace
Zo kan in het Return statement van de functie die een Integer() oplevert, een array initializer worden gebruikt met elementen van het type Integer.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.