Delen via


Procedure: Een standaardeigenschap declareren en aanroepen in Visual Basic

Een standaardeigenschap is een klasse- of structuureigenschap waartoe uw code toegang heeft zonder deze op te geven. Bij het aanroepen van codenamen van een klasse of structuur, maar niet van een eigenschap, en de context toegang tot een eigenschap toestaat, wordt de toegang tot de standaardeigenschap van die klasse of structuur omgezet als deze bestaat.

Een klasse of structuur kan maximaal één standaardeigenschap hebben. U kunt echter een standaardeigenschap overbelasten en meer dan één versie ervan hebben.

Zie Standaard voor meer informatie.

Een standaardeigenschap declareren

  1. Declareer de eigenschap op de normale manier. Geef het Shared of Private trefwoord niet op.

  2. Neem het Default trefwoord op in de eigenschapsdeclaratie.

  3. Geef ten minste één parameter op voor de eigenschap. U kunt geen standaardeigenschap definiëren die niet ten minste één argument in beslag neemt.

    Default Property myProperty(ByVal index As Integer) As String
    

Een standaardeigenschap aanroepen

  1. Declareer een variabele van het klasse- of structuurtype.

    Dim x As New class1(3)
    
  2. Gebruik de naam van de variabele alleen in een expressie waarin u normaal gesproken de naam van de eigenschap opneemt.

    MsgBox(x)
    
  3. Volg de naam van de variabele met een argumentenlijst tussen haakjes. Een standaardeigenschap moet ten minste één argument hebben.

    MsgBox(x(1))
    
  4. Als u de standaardeigenschapswaarde wilt ophalen, gebruikt u de naam van de variabele, met een lijst met argumenten, in een expressie of na het gelijkteken (=) in een toewijzingsinstructie.

    MsgBox(x(1) & x(2) & x(3))
    
  5. Als u de standaardeigenschapswaarde wilt instellen, gebruikt u de naam van de variabele, met een lijst met argumenten, aan de linkerkant van een toewijzingsinstructie.

    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    
  6. U kunt altijd de standaardeigenschapsnaam opgeven samen met de naam van de variabele, net zoals u dat zou doen voor toegang tot een andere eigenschap.

    x.myProperty(1) = "Hello"
    x.myProperty(2) = " "
    x.myProperty(3) = "World"
    

Voorbeeld 1

In het volgende voorbeeld wordt een standaardeigenschap voor een klasse declareren.

Public Class class1
    Private myStrings() As String
    Sub New(ByVal size As Integer)
        ReDim myStrings(size)
    End Sub
    Default Property myProperty(ByVal index As Integer) As String
        Get
            ' The Get property procedure is called when the value
            ' of the property is retrieved.
            Return myStrings(index)
        End Get
        Set(ByVal Value As String)
            ' The Set property procedure is called when the value
            ' of the property is modified.
            ' The value to be assigned is passed in the argument 
            ' to Set.
            myStrings(index) = Value
        End Set
    End Property
End Class

Voorbeeld 2

In het volgende voorbeeld ziet u hoe u de standaardeigenschap myProperty voor klasse class1aanroept. In de drie toewijzingsinstructies worden waarden opgeslagen in myPropertyen de MsgBox aanroep worden de waarden gelezen.

Sub Test()
    Dim x As New class1(3)
    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    MsgBox(x(1) & x(2) & x(3))
End Sub

Het meest voorkomende gebruik van een standaardeigenschap is de Item[] eigenschap in verschillende verzamelingsklassen.

Robuuste programmering

Standaardeigenschappen kunnen leiden tot een kleine vermindering van broncodetekens, maar ze kunnen uw code moeilijker leesbaar maken. Als de aanroepende code niet bekend is met uw klasse of structuur, kan het niet zeker zijn of deze verwijzing toegang heeft tot de klasse of structuur zelf, of een standaardeigenschap. Dit kan leiden tot compilerfouten of subtiele runtimelogicafouten.

U kunt de kans op standaardeigenschapsfouten enigszins verminderen door altijd de instructie Option Strict te gebruiken om de controle van compilertypen in te stellen op On.

Als u van plan bent een vooraf gedefinieerde klasse of structuur in uw code te gebruiken, moet u bepalen of deze een standaardeigenschap heeft en zo ja, wat de naam ervan is.

Vanwege deze nadelen kunt u overwegen geen standaardeigenschappen te definiëren. Voor de leesbaarheid van code moet u ook overwegen altijd expliciet naar alle eigenschappen te verwijzen, zelfs standaardeigenschappen.

Zie ook