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

9.14. Object Initializers

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.

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 2012 Broncode - Codevoorbeeld 283
Class Person
    Public Property Name As String
    Public Property Address As Address
End Class
Class Address
    Public Property Street As String
    Public Property City As String
    Public Property ZipCode As String
End Class
Class Counter
    Public Sub New(ByVal value As Integer)
        _Value = value
    End Sub
    Private _Value As Integer
    Public ReadOnly Property Value() As Integer
        Get
            Value = _Value
        End Get
    End Property
    Public Property StepValue As Integer
    Public Sub Raise()
        _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 maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.