En Visual Basic, les valeurs par défaut sont définies pour :
Optional et de l'initialiseur.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")
Public Property Status As String = "Undefined"
Particularités :
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
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.