Så här anropar du en tilläggsmetod (Visual Basic)

Med tilläggsmetoder kan du lägga till metoder i en befintlig klass. När en tilläggsmetod har deklarerats och förts in i omfånget kan du anropa den som en instansmetod av den typ som den utökar. Mer information om hur du skriver en tilläggsmetod finns i Så här skriver du en tilläggsmetod.

Följande instruktioner refererar till tilläggsmetoden PrintAndPunctuate, som visar stränginstansen som anropar den, följt av det värde som skickas in för den andra parametern, punc.

Imports System.Runtime.CompilerServices

Module StringExtensions
    <Extension()>
    Public Sub PrintAndPunctuate(ByVal aString As String,
                                 ByVal punc As String)
        Console.WriteLine(aString & punc)
    End Sub

End Module

Metoden måste vara inom räckhåll när den anropas.

Anropa en tilläggsmetod

  1. Deklarera en variabel som har datatypen för den första parametern i tilläggsmetoden. För PrintAndPunctuatebehöver du en String variabel:

    Dim example = "Ready"
    
  2. Variabeln anropar tilläggsmetoden och dess värde är bundet till den första parametern, aString. Följande anrop visar Ready?.

    example.PrintAndPunctuate("?")
    

    Observera att anropet till den här tilläggsmetoden ser ut precis som ett anrop till någon av de String instansmetoder som kräver en parameter:

    example.EndsWith("dy")
    example.IndexOf("R")
    
  3. Deklarera en annan strängvariabel och anropa metoden igen för att se att den fungerar med valfri sträng.

    Dim example2 = " or not"
    example2.PrintAndPunctuate("!!!")
    

    Resultatet den här gången är: or not!!!.

Exempel

Följande kod är ett fullständigt exempel på hur du skapar och använder en enkel tilläggsmetod.

Imports System.Runtime.CompilerServices
Imports ConsoleApplication1.StringExtensions

Module Module1

    Sub Main()

        Dim example = "Hello"
        example.PrintAndPunctuate(".")
        example.PrintAndPunctuate("!!!!")

        Dim example2 = "Goodbye"
        example2.PrintAndPunctuate("?")
    End Sub

    <Extension()>
    Public Sub PrintAndPunctuate(ByVal aString As String,
                                 ByVal punc As String)
        Console.WriteLine(aString & punc)
    End Sub
End Module

' Output:
' Hello.
' Hello!!!!
' Goodbye?

Se även