Compartilhar via


Class_Initialize Alterações para usuários do Visual Basic 6.0

Um construtor é um método que é executado quando um objeto é criado.Constructors são novos no Visual Basic. Eles combinam o comportamento do New demonstrativo e o Class_Initialize método do Visual Basic 6.0, ainda oferecem maior flexibilidade e controle para criar instâncias de classe. Para obter mais informações sobre criação de objetos, consulte Criando e Usando Objetos.

Class_Initialize

Visual Basic 6,0

Visual Basic 6.0 fornece suporte para o conceito de construtor através de Class_Initialize método. Esse método é privado e não permite parâmetros.Este método é chamado automaticamente quando uma nova instância da classe é criada.Uma telefonar para o New chamadas de palavra-chave a Class_Initialize método, se ele existir.

Suponha que você queira especificar o crescimento anual de uma árvore com um padrão de cinco anos.O código da classe teria algo assim:

' 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

O código para criar uma árvore e definr o atributo teria esta aparência:

Dim growingTree As New Tree
growingTree.YearlyGrowth = 10

Visual Basic 2008

Visual Basic 2008 aceita construtores através da New palavra-chave. Nesse caso, o código adicional para conjunto o YearlyGrowth propriedade não é necessária. Uma telefonar para o New palavra-chave chama um do sobrecarregado New métodos da classe. Se a classe contém nenhum New método, então um sem parâmetros é criado pelo compilador.

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

O código para criar uma árvore e definr o atributo teria esta aparência:

Dim growingTree As New Tree(10)

Neste exemplo, não é possível criar um Tree sem especificar o crescimento anual. Para permitir que, você poderia adicionar outro New método à classe que não tem parâmetros. Isso é chamado de sobrecarga o construtor.

Keyword NEW

Visual Basic 6,0

No Visual Basic 6.0, essa linha de código não é recomendado geralmente:

Dim growingTree As New Tree

Isso ocorre porque sempre que o growingTree variável for acessada, o compilador verifica se o valor é Nothing. Nesse caso, uma nova instância é criada e atribuída a growingTree. Isso é não somente ineficiente, mas leva a erros de programação.

Visual Basic 2008

In Visual Basic 2008, a instância não está marcada e nenhuma nova instância é criada. A única maneira de criar uma nova instância é executar uma linha de código com o New ou As New palavras-chave. Na verdade, a linha de código acima é a maneira recomendada de criação uma nova instância.

Sugestões de atualização

O Assistente de atualização atualiza o Class_Initialize método para isso:

'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

Talvez seja possível eliminar a telefonar para Class_Initialize_Renamed e mova o código diretamente para o construtor. Isso pode tornar o seu código mais legível como eliminar uma chamada desnecessária para um procedimento.Se cada telefonar para New é normalmente seguida configuração um determinado agrupar de propriedades, considere adicionar um construtor que defina estas propriedades. O código do Visual Basic 6.0 pode ser substituído por este código em Visual Basic 2008:

Public Sub New(ByVal newYearlyGrowth As Integer)
    Me.YearlyGrowth = newYearlyGrowth
End Sub

Consulte também

Tarefas

Como: Use a palavra-chave Novo

Outros recursos

Criando e Usando Objetos