Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los métodos de extensión permiten agregar métodos a una clase existente. Después de declarar un método de extensión y llevarlo al ámbito de aplicación, puede invocarlo como si fuera un método de instancia del tipo que extiende. Para obtener más información sobre cómo escribir un método de extensión, vea Cómo: Escribir un método de extensión.
Las instrucciones siguientes hacen referencia al método PrintAndPunctuatede extensión , que mostrará la instancia de cadena que la invoca, seguida de cualquier valor que se envíe en para el segundo parámetro, 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
El método debe estar en el ámbito cuando se le llama.
Llamar a un método de extensión
Declare una variable que tenga el tipo de datos del primer parámetro del método de extensión. Para
PrintAndPunctuate, necesita una String variable:Dim example = "Ready"Esa variable invocará el método de extensión y su valor se enlaza al primer parámetro,
aString. La siguiente instrucción de llamada mostraráReady?.example.PrintAndPunctuate("?")Observe que la llamada a este método de extensión es similar a una llamada a cualquiera de los String métodos de instancia que requieren un parámetro:
example.EndsWith("dy") example.IndexOf("R")Declare otra variable de cadena y vuelva a llamar al método para ver que funciona con cualquier cadena.
Dim example2 = " or not" example2.PrintAndPunctuate("!!!")El resultado esta vez es:
or not!!!.
Ejemplo
El código siguiente es un ejemplo completo de la creación y el uso de un método de extensión simple.
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?