Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
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"Ez a változó meghívja a bővítménymetódust, és az értéke az első paraméterhez van kötve.
aStringA következő hívási utasítás jelenik megReady?.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")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?