Partager via


Modifications de Class_Initialize pour les utilisateurs de Visual Basic 6.0

Mise à jour : novembre 2007

Un constructeur est une méthode qui est exécutée lorsqu'un objet est créé. Les constructeurs sont nouveaux dans Visual Basic. Ils combinent le comportement de l'instruction New et de la méthode Class_Initialize de Visual Basic 6.0 , toutefois, ils permettent une création plus flexible et mieux contrôlée des instances de classe. Pour plus d'informations sur la création d'objets, consultez Création et utilisation d'objets.

Class_Initialize

Visual Basic 6.0

Visual Basic 6.0 permet une prise en charge du concept de constructeur via la méthode Class_Initialize. Cette méthode est privée et n'autorise pas de paramètres. Cette méthode est automatiquement appelée lorsqu'une nouvelle instance de la classe est créée. Un appel au mot clé New appelle la méthode Class_Initialize, s'il existe.

Supposez que vous souhaitez spécifier la croissance annuelle d'une arborescence avec une valeur par défaut de cinq années. Le code de la classe se présenterait de la manière suivante :

' 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

Le code permettant de créer une arborescence et de définir la propriété se présenterait de la manière suivante :

Dim growingTree As New Tree
growingTree.YearlyGrowth = 10

Visual Basic 2008

Visual Basic 2008 prend en charge des constructeurs via le mot clé New. Dans ce cas, le code supplémentaire permettant de définir la propriété YearlyGrowth n'est pas requis. Un appel au mot clé New appelle l'une des méthodes New surchargées dans la classe. Si la classe ne contient aucune méthode New, une classe sans paramètres est créée par le compilateur.

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

Le code permettant de créer une arborescence et de définir la propriété se présenterait de la manière suivante :

Dim growingTree As New Tree(10)

Dans cet exemple, il n'est pas possible de créer un Tree sans spécifier la croissance annuelle. Pour cela, vous pouvez ajouter une autre méthode New à la classe qui n'a pas de paramètres. Cette opération est appelée surcharge du constructeur.

Nouveau mot clé

Visual Basic 6.0

Dans Visual Basic 6.0, cette ligne de code n'est généralement pas recommandée :

Dim growingTree As New Tree

Cela est dû au fait que chaque fois que la variable growingTree est accédée, le compilateur vérifie si la valeur est Nothing. Le cas échéant, une nouvelle instance est créée et assignée à growingTree. Cette opération est non seulement inefficace, mais provoque des erreurs de programmation.

Visual Basic 2008

Dans Visual Basic 2008, l'instance n'est pas vérifiée et aucune nouvelle instance n'est créée. La seule façon de créer une nouvelle instance est d'exécuter une ligne de code avec les mots clé New ou As New. En fait, la ligne de code ci-dessus est désormais recommandée pour gérer la création d'une nouvelle instance.

Suggestions de mise à niveau

L'Assistant Mise à niveau met à niveau la méthode Class_Initialize vers :

'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

Vous pouvez peut-être éliminer l'appel à Class_Initialize_Renamed et déplacer le code directement dans le constructeur. Cela peut rendre votre code plus lisible étant donné que cela élimine un appel inutile à une procédure. Si chaque appel à New est couramment suivi de la définition d'un groupe particulier de propriétés, envisagez d'ajouter un constructeur qui définisse ces propriétés. Le code Visual Basic 6.0 peut être remplacé par ce code dans Visual Basic 2008 :

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

Voir aussi

Tâches

Comment : utiliser le nouveau mot clé

Autres ressources

Création et utilisation d'objets