homelinksBlijf op de hoogte van de recente aanpassingen op vbvoorbeelden!
Visual Basic 2010 Voorbeelden

visual basic 2010 broncode voorbeelden

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

9.14. Object Initializers

Print Email Deel op Facebook Deel op Twitter

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Vanaf Visual Basic 9.0 (2008) kunnen velden en writable properties in de object initializer worden geïnitialiseerd aan de hand van een With clausule.
Visual Basic 2010 Broncode
Class Person
    Private m_Name As String
    Public Property Name() As String
        Get
            Name = m_Name
        End Get
        Set(ByVal value As String)
            m_Name = value
        End Set
    End Property
    Private m_Address As Address
    Public Property Address() As Address
        Get
            Address = m_Address
        End Get
        Set(ByVal value As Address)
            m_Address = value
        End Set
    End Property
End Class
Class Address
    Private m_Street As String
    Public Property Street() As String
        Get
            Street = m_Street
        End Get
        Set(ByVal value As String)
            m_Street = value
        End Set
    End Property
    Private m_City As String
    Public Property City() As String
        Get
            City = m_City
        End Get
        Set(ByVal value As String)
            m_City = value
        End Set
    End Property
    Private m_ZipCode As String
    Public Property ZipCode() As String
        Get
            ZipCode = m_ZipCode
        End Get
        Set(ByVal value As String)
            m_ZipCode = value
        End Set
    End Property
End Class
Class Counter
    Public Sub New(ByVal value As Integer)
        m_Value = value
    End Sub
    Private m_Value As Integer
    Public ReadOnly Property Value() As Integer
        Get
            Value = m_Value
        End Get
    End Property
    Private m_StepValue As Integer
    Public Property StepValue() As Integer
        Get
            StepValue = m_StepValue
        End Get
        Set(ByVal value As Integer)
            m_StepValue = value
        End Set
    End Property
    Public Sub Raise()
        m_Value += StepValue
    End Sub
End Class
Class Example
    Public Shared Sub Main()
        Dim person1 As Person = New Person() With {.Name = "John"}
        Console.WriteLine(person1.Name)
        '
        Dim person2 As Person = New Person()                                ' (1)
        With person2                                                        ' (1)
            .Name = "Paul"                                                  ' (1)
        End With                                                            ' (1)
        '
        Dim person3 As Person = New Person() _
                                With {.Name = "Jane", _
                                      .Address = New Address() _
                                                 With {.City = "New York"}} ' (2)
        Console.WriteLine(person3.Name)
        Console.WriteLine(person3.Address.City)
        '
        Dim counter1 As Counter = New Counter(5) With {.StepValue = 4}      ' (3)
        Console.WriteLine(counter1.Value)
        counter1.Raise()
        Console.WriteLine(counter1.Value)
        '
        Console.ReadLine()
    End Sub
End Class
Console Application Output
John
Jane
New York
5
9
(1) Het gebruik van With in de object initializer is identiek aan het apart instantiëren van het object, om daarna de properties te gaan initialiseren.

Eerst wordt dus steeds de constructor uitgevoerd, dit nog vooraleer de properties ( of velden ) worden geïnitialiseerd.

(2) Meerdere properties kunnen geïnitialiseerd worden.  Niet alle properties moeten geïnitialiseerd worden.  Object initializers kunnen genest worden.

(3) Ook properties van objecten van een type met een niet default constructor mogen - naast de aanroep naar deze constructor - via With geïnitialiseerd worden.

Enkel publiek beschikbare, writeable, instance properties die niet indexed of qualified zijn, kunnen zo worden geïnitialiseerd.  Dit is duidelijk een voordeel van het gebruik van properties ten aanzien van het gebruik van set procedures en get functies.

Ook publiek beschikbare velden ( geen constanten ) kunnen zo worden geïnitialiseerd.

Dit kan ook met de properties en velden van een structure.

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.