el Guille, la Web del Visual Basic, C#, .NET y más...

Novedades de Visual Basic 9.0

(Parte 8 de 9)

 
Publicado el 22/Jul/2007
Actualizado el 25/Jul/2007
Autor: Guillermo 'guille' Som

Novedades de Visual Basic 9.0 (Parte 8 de 9): Métodos parciales.



 

Métodos parciales

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)


Código de ejemplo (comprimido):

Para bajarte el código, hazlo desde la página principal de
Las Novedades de Visual Basic 9.0 con la CTP de Junio 2007.


 


La fecha/hora en el servidor es: 22/12/2024 16:59:40

La fecha actual GMT (UTC) es: 

©Guillermo 'guille' Som, 1996-2024