In Visual Basic i valori predefiniti sono assegnati per:
Optional e l'inizializzatore.Public Sub LogMessage(message As String, Optional level As String = "INFO") Console.WriteLine($"[{level}]: {message}") End Sub ' Chiamata senza secondo argomento - sarà 'INFO' LogMessage("Test")
Public Property Status As String = "Undefined"
Caratteristiche:
È possibile impostare un valore predefinito per un parametro di tipo oggetto (ad esempio, una classe) in VB.NET?
Risposta: No, per i parametri Optional sono ammessi solo espressioni costanti, cioè tipi di dati di valore e stringhe. Per gli oggetti si può solo usare il valore Nothing, e se si desidera un oggetto, questo deve essere creato all'interno del metodo:
Public Sub DoWork(Optional obj As SomeClass = Nothing) If obj Is Nothing Then obj = New SomeClass() End If ' ... End Sub
Storia
Sistema finanziario: Durante l'aggiunta di un nuovo parametro con valore Optional, lo sviluppatore lo ha posizionato non alla fine della lista. L'intera chiamata è stata compilata, ma i parametri si sono spostati, causando una trasmissione errata dei valori.
Storia
Sistema di reportistica: Sono state utilizzate proprietà con auto-inizializzazione (VB.NET 2010+), ma si è dimenticato di prevedere la logica per sovrascrivere i valori dalla costruzione, il che ha portato a sovrascritture non sempre corrette del valore predefinito.
Storia
Integrazione con API esterne: Nel tentativo di impostare un oggetto come valore predefinito per un parametro Optional è emerso un errore di compilazione, il che ha ritardato il rilascio e ha richiesto una massiccia rifattorizzazione delle firme dei metodi.