MSDN dice di Optional Parameters per Visual Basic
Per ogni parametro opzionale, è necessario specificare un costante espressione come il valore predefinito di quel parametro. Se l'espressione è uguale a Nothing, il valore predefinito del tipo di dati del valore viene utilizzato come valore predefinito del parametro .
Così non si può usare quella sintassi, invece si potrebbe scrivere qualcosa di simile
Private Sub Test(a As Integer, Optional c As Color = Nothing)
If c = Nothing Then
c = Color.Black ' your default color'
End If
......
End Sub
Lo stesso codice scritto in C# è la seguente
private void Test(int a, Color c = default(Color))
{
if (c.IsEmpty)
c = Color.Black;
}
In C# non è possibile verificare un tipo di valore (come Colore, Punto, Dimensione ecc.) contro un valore nullo. Questi tipi non sono mai nulli, ma hanno un valore predefinito per il tipo- (Mi piace 0 per i numeri interi), quindi, se devi passare un parametro facoltativo per un tipo di valore, puoi crearlo con la parola chiave new
con i valori che desideri piace usare come predefinito o usare il default
keyword e lasciare che il framework decida quale valore è il default per il tipo. Se si lascia che il framework scelga la proprietà IsEmpty sarà vera.
E 'strano che in C# il compilatore non mi permette di dichiarare "Color c = null" quando si dichiara il parametro. Si lamentava di non poter assegnare null al tipo di valore. Ho dovuto dire "Colore c = nuovo colore()" e poi nel mio test del codice per "c.IsEmpty". –
@BillGregg ha aggiunto la versione C# – Steve