En inglés: Partial methods. Los métodos parciales nos permiten
definir "prototipos" de métodos que después podemos definir completamente o
no, dependiendo de lo que necesitemos. Debido a que tenemos el "prototipo",
podemos usar esos métodos en cualquier parte del código. Si no existe una
implementación de ese método, el compilador quitará todas las llamadas que
hubiera en el código... vamos que si no lo implementamos, es como si no
existiera.
Para entenderlo mejor, vamos a ver un ejemplo.
' Declaración del método parcial
Partial Private Sub prueba1()
End Sub
Sub Main()
' Podemos llamar al método "parcial" aunque
' no se haya implementado
prueba1()
Console.ReadKey()
End Sub
En este código definimos el método prueba1, le indicamos
que es Partial para que el compilador sepa que solo estamos definiendo el
prototipo.
En el método Main podemos usar ese método, aunque no lo
hayamos implementado.
Si decidimos implementarlo, en la llamada que hay en el método
Main se usará el código que hayamos escrito.
Si no lo implementamos, el compilador quitará esa línea y no la compilará,
es decir, será lo mismo que si no existiera.
Condiciones para definir métodos parciales
Los métodos parciales tienen ciertas "restricciones", es decir, hay
ciertas "normas" que debemos seguir para poder definir métodos parciales:
- Solo la definición del prototipo debe tener la instrucción
Partial
- Deben ser de tipo Sub
- Deben ser privados (Private)
- Pueden ser compartidos (Shared)
- Los podemos definir en clases (Class), módulos (Module)
o estructuras (Structures).
El tipo en el que se define un método parcial puede ser parcial o normal
- Pueden ser generic, en este caso, las restricciones deben
estar tanto en la definición como en la implementación
- Como norma, no se puede acceder mediante AddressOf
a un método parcial. Aunque si está implementado si se puede, por tanto
solo deberíamos usarlo como "delegado" si estamos seguros de que está
implementado, ya que si no está implementado, dará un error indicándonos
de que no se puede usar AddressOf con un método
parcial.
- Los nombres de los parámetros deben tener el mismo nombre en la
definición y en la implementación (la refactorización se encarga de
cambiar esos nombres en las dos partes)
La ayuda "provisional" de Visual Studio nos dice esto sobre los métodos
parciales (de C#):
Partial methods enable the implementer of one part
of a class to define a method, similar to an event. The implementer of the
other part of the class can choose whether to implement the method or not.
If the method is not implemented, then the compiler removes the method
signature and all calls to the method. Therefore, any code in the partial
class can freely use a partial method, even if the implementation is not
supplied. No compile-time or run-time errors will result if the method is
called but not implemented.
Que más o menos viene a significar:
Los métodos parciales permite a los implementadores de
una parte de una clase a definir un método, parecido a un evento. El
implementador de la otra parte de la clase puede elegir si implementa o no
el método. Si el método no está implementado el compilador quitará la
"firma" del método y todas las llamadas a ese método. Por tanto, cualquier
código en la clase parcial puede usar libremente un método parcial, incluso
si la implementación no se ha proporcionado. No se producirá ningún error de
compilación ni de tiempo de ejecución si se llama a un método y no está
implementado.
Aunque aquí se hable de clases parciales, como te he comentado antes, no
es una "obligación", pero es la forma más "habitual" de usar este tipo de
métodos, ya que la "gracia" está en que en una parte de la clase parcial se
defina y en otra se implemente.
Ir al índice de las
novedades de Visual Basic 2008 (VB 9.0)