Compartir a través de


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

Otros recursos

Crear y utilizar objetos