ProgrammationDéveloppeur d'applications (VB.NET)

Décrivez les méthodes de mise en œuvre des valeurs par défaut pour les variables, propriétés et méthodes en Visual Basic. Dans quels cas leur utilisation peut entraîner des erreurs ou un comportement inattendu ?

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

En Visual Basic, les valeurs par défaut sont définies pour :

  • Variables — assignation lors de la déclaration (uniquement à l'intérieur des méthodes).
  • Propriétés — via l'auto-initialisation ou dans le constructeur.
  • Paramètres de méthodes — à l'aide du mot-clé Optional et de l'initialiseur.

Exemple pour les paramètres :

Public Sub LogMessage(message As String, Optional level As String = "INFO") Console.WriteLine($"[{level}]: {message}") End Sub ' Appel sans deuxième argument - sera 'INFO' LogMessage("Test")

Exemple d'auto-initialisation de propriété :

Public Property Status As String = "Undefined"

Particularités :

  • Les paramètres Optionnels peuvent uniquement être spécifiés pour les derniers dans la liste des paramètres ;
  • Les valeurs par défaut doivent être connues au moment de la compilation ;
  • On ne peut pas utiliser des types autres que des types de valeur et des chaînes (par exemple, une classe) comme valeur par défaut pour un paramètre.

Question piège.

Peut-on définir une valeur par défaut pour un paramètre de type objet (par exemple, une classe) en VB.NET ?

Réponse : Non, pour les paramètres Optional, seules des expressions constantes sont acceptées, c'est-à-dire des types de données de valeur et des chaînes. Pour les objets, on ne peut utiliser que la valeur Nothing, et si un objet est nécessaire, il doit être créé dans le corps de la méthode :

Public Sub DoWork(Optional obj As SomeClass = Nothing) If obj Is Nothing Then obj = New SomeClass() End If ' ... End Sub

Exemples d'erreurs réelles dues à une méconnaissance des subtilités du sujet.


Histoire

Système financier : Lors de l'ajout d'un nouveau paramètre avec une valeur Optionnelle, le développeur l'a spécifié non à la fin de la liste. L'ensemble de l'appel a été compilé, mais les paramètres ont été décalés, ce qui a entraîné un passage incorrect des valeurs.


Histoire

Système de reporting : Ils ont utilisé des propriétés avec auto-initialisation (VB.NET 2010+), mais ont oublié de prévoir la logique de redéfinition des valeurs à partir du constructeur, ce qui a fait que la valeur par défaut n'était pas toujours correctement réécrite.


Histoire

Intégration avec une API externe : En essayant de définir un objet comme valeur par défaut pour un paramètre Optionnel, une erreur de compilation est survenue, ce qui a retardé la publication et a nécessité un refactoring massif des signatures des méthodes.