Útmutató: Bővítmény metódus meghívása (Visual Basic)

A bővítménymetelyek lehetővé teszik metódusok hozzáadását egy meglévő osztályhoz. A bővítménymetódus deklarálása és hatókörbe való felvétele után úgy hívhatja meg, mintha a típus példánymetódusa lenne, amelyet kiterjeszt. További információ a bővítménymetódusok írásáról : Útmutató: Bővítménymetódus írása.

Az alábbi utasítások a bővítménymetódusra PrintAndPunctuatevonatkoznak, amely megjeleníti az azt meghívó sztringpéldányt, majd a második paraméterhez puncbeküldött bármilyen értéket.

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

A metódusnak hatókörben kell lennie, amikor meghívják.

Bővítmény metódus meghívása

  1. Deklaráljon egy változót, amely a bővítménymetódus első paraméterének adattípusával rendelkezik. Ehhez PrintAndPunctuateegy String változóra van szüksége:

    Dim example = "Ready"
    
  2. Ez a változó meghívja a bővítménymetódust, és az értéke az első paraméterhez van kötve. aString A következő hívási utasítás jelenik meg Ready?.

    example.PrintAndPunctuate("?")
    

    Figyelje meg, hogy a bővítménymetódus hívása ugyanúgy néz ki, mint bármely olyan példánymetódus hívása String , amely egy paramétert igényel:

    example.EndsWith("dy")
    example.IndexOf("R")
    
  3. Deklaráljon egy másik sztringváltozót, és hívja meg újra a metódust, hogy lássa, bármilyen sztringgel működik.

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

    Az eredmény ezúttal a következő: or not!!!.

példa

Az alábbi kód egy egyszerű bővítménymetódus létrehozásának és használatának teljes példája.

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?

Lásd még