Dela via


Gör så här: Skapa en egenskap (Visual Basic)

Du omger en egenskapsdefinition mellan en Property-instruktion och en End Property-instruktion. I den här definitionen definierar du en Get procedur, en Set procedur eller både och. All kod för egenskaperna finns inom dessa procedurer.

Proceduren Get hämtar egenskapens värde och proceduren Set lagrar ett värde. Om du vill att egenskapen ska ha läs-/skrivåtkomst måste du definiera båda procedurerna. För en skrivskyddad egenskap definierar du endast Get, och för en skrivskyddad egenskap definierar du endast Set.

Skapa en egenskap

  1. Utanför en egenskap eller procedur använder du en Egenskapsuttryck, följt av ett End Property-uttalande.

  2. Om egenskapen tar parametrar följer du nyckelordet Property med namnet på proceduren och sedan parameterlistan inom parenteser.

  3. Följ parenteserna med en As sats för att ange datatypen för egenskapens värde. Du måste ange datatypen även för en egenskap som endast kan skrivas.

  4. Lägg till Get och Set procedurer efter behov. Se följande anvisningar.

Skapa en Get-metod som hämtar ett egenskapsvärde

  1. Mellan uttrycken Property och End Property, skriv en Get-instruktion följt av en End Get-instruktion. Du behöver inte definiera några parametrar för proceduren Get .

  2. Placera kodinstruktionerna för att hämta egenskapens värde mellan Get och End Get-uttalandena. Den här koden kan innehålla andra beräkningar och datamanipuleringar utöver att generera och returnera egenskapens värde.

  3. Använd en Return instruktion för att returnera egenskapens värde till den anropande koden.

Du måste skriva en Get-procedur för en skriv-läs egenskap och för en skrivskyddad egenskap. Du får inte definiera en Get procedur för en skrivbar egenskap.

Så här skapar du en Set-procedur som skriver en egenskaps värde

  1. Mellan uttrycken Property och End Property skriver du en Set-instruktion följt av en End Set-instruktion.

  2. I -instruktionen Set kan du välja att följa nyckelordet Set med en parameterlista inom parenteser. Om parameterlistan inte finns eller är tom definieras en implicit parameter med namnet Value , vars typ är själva egenskapens typ. Om parameterlistan inte är tom kan du använda ett annat namn om det är lämpligt, men parametern måste ha samma datatyp som själva egenskapen.

  3. Lägg kodinstruktionerna för att lagra ett värde i egenskapen mellan uttalandena Set och End Set. Den här koden kan innehålla andra beräkningar och datamanipuleringar utöver validering och lagring av egenskapens värde.

  4. Använd värdeparametern för att acceptera det värde som anges av den anropande koden. Du kan antingen lagra det här värdet direkt i en tilldelningssats eller använda det i ett uttryck för att beräkna det interna värde som ska lagras.

Du måste skriva en Set procedur för en läs- och skrivbar egenskap och för en skrivbar egenskap. Du får inte definiera en Set procedur för en skrivskyddad egenskap.

Exempel

I följande exempel skapas en läs-/skrivegenskap som lagrar ett fullständigt namn som två komponentnamn, förnamnet och efternamnet. När den anropande koden läser kombinerar fullNameproceduren Get de två komponentnamnen och returnerar det fullständiga namnet. När den anropande koden tilldelar ett nytt fullständigt namn försöker proceduren Set dela upp det i två komponentnamn. Om det inte hittar något utrymme lagras allt som förnamn.

Dim firstName, lastName As String
Property fullName() As String
    Get
      If lastName = "" Then
          Return firstName
      Else
          Return firstName & " " & lastName
      End If

    End Get
    Set(ByVal Value As String)
        Dim space As Integer = Value.IndexOf(" ")
        If space < 0 Then
            firstName = Value
            lastName = ""
        Else
            firstName = Value.Substring(0, space)
            lastName = Value.Substring(space + 1)
        End If
    End Set
End Property

I följande exempel visas typiska anrop till egenskapsprocedurerna för fullName. Det första anropet anger egenskapsvärdet och det andra anropet hämtar det.

fullName = "MyFirstName MyLastName"
MsgBox(fullName)

Se även