Cambios de Class_Initialize para usuarios de Visual Basic 6.0
Actualización: noviembre 2007
Un constructor es un método que se ejecuta cuando se crea un objeto. Los constructores son una novedad de Visual Basic. Combinan el comportamiento de la instrucción New y el método Class_Initialize de Visual Basic 6.0, a la vez que ofrecen mayor flexibilidad y control cuando se crean instancias de una clase. Para obtener más información sobre la creación de objetos, vea Crear y utilizar objetos.
Class_Initialize
Visual Basic 6.0
Visual Basic 6.0 proporciona compatibilidad para el concepto de constructor mediante el método Class_Initialize. Este método es privado y no permite ningún parámetro. Se llama automáticamente a este método cuando se crea una nueva instancia de la clase. Una llamada a la palabra clave New llama al método Class_Initialize, si existe.
Suponga que desea especificar el crecimiento anual de un árbol con un valor predeterminado de cinco años. El código de clase será parecido al siguiente:
' Visual Basic 6.0
Private mvarYearlyGrowth As Integer
Public Property Get YearlyGrowth() As Integer
YearlyGrowth = mvarYearlyGrowth
End Property
Public Property Let YearlyGrowth(ByVal newValue As Integer)
mvarYearlyGrowth = newValue
End Property
Private Sub Class_Initialize()
mvarHeight = 5
End Sub
El código para crear un árbol y establecer la propiedad se parecería al siguiente:
Dim growingTree As New Tree
growingTree.YearlyGrowth = 10
Visual Basic 2008
Visual Basic 2008 admite constructores mediante la palabra clave New. En este caso, no se requiere código adicional para establecer la propiedad YearlyGrowth. Una llamada a la palabra clave New llama a uno de los métodos New sobrecargados de la clase. Si la clase no contiene ningún método New, el compilador crea a continuación uno sin parámetros.
Option Strict On
Public Class Tree
Private yearlyGrowthValue As Integer = 5
Public Property YearlyGrowth() As Integer
Get
Return yearlyGrowthValue
End Get
Set(ByVal Value As Integer)
yearlyGrowthValue = Value
End Set
End Property
Public Sub New(ByVal newYearlyGrowth As Integer)
Me.YearlyGrowth = newYearlyGrowth
End Sub
End Class
El código para crear un árbol y establecer la propiedad se parecería al siguiente:
Dim growingTree As New Tree(10)
En este ejemplo, no es posible crear Tree sin especificar el crecimiento anual. Para permitir eso, podría agregar otro método New a la clase que no tiene ningún parámetro. A esto se llama sobrecargar el constructor.
Palabra clave New
Visual Basic 6.0
En Visual Basic 6.0, no se recomienda en general utilizar esta línea de código:
Dim growingTree As New Tree
Esto es así porque siempre que tenga acceso a la variable growingTree, el compilador comprueba si el valor es Nothing. En ese caso, se crea una nueva instancia y se asigna a growingTree. Esto no sólo es ineficaz, sino que provoca errores de programación.
Visual Basic 2008
En Visual Basic 2008, no se comprueba la instancia y no se crea ninguna instancia nueva. La única manera de crear una nueva instancia es ejecutar una línea de código con las palabras clave New o As New En efecto, la línea de código anterior es ahora la manera recomendada de controlar la creación de una nueva instancia.
Sugerencias de actualización
El Asistente para actualización actualiza el método Class_Initialize a lo siguiente:
'UPGRADE_NOTE: Class_Initialize was upgraded to Class_Initialize_Renamed. Click for more: ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1061"'
Private mvarHeight As Short
Private Sub Class_Initialize_Renamed()
mvarHeight = 0
End Sub
Public Sub New()
MyBase.New()
Class_Initialize_Renamed()
End Sub
Quizá puede eliminar la llamada a Class_Initialize_Renamed y pasar directamente el código al constructor. Esto facilitaría la lectura de su código ya que elimina una llamada innecesaria a un procedimiento. Si a cada llamada a New le sigue normalmente el establecimiento de un grupo determinado de propiedades, tenga en cuenta la adición de un constructor que establezca esas propiedades. Este código podría reemplazar al código de Visual Basic 6.0 en Visual Basic 2008:
Public Sub New(ByVal newYearlyGrowth As Integer)
Me.YearlyGrowth = newYearlyGrowth
End Sub
Vea también
Tareas
Cómo: Utilizar la nueva palabra clave