Les paramètres facultatifs doit être la dernière. Si vous ne pouvez pas ajouter un paramètre supplémentaire à cette méthode, à moins que ses aussi en option. Ex:
void MyMethod(int value, int otherValue = 0);
Si vous voulez ajouter un nouveau paramètre à cette méthode sans surcharge, il doit être en option. Comme ceci
void MyMethod(int value, int otherValue = 0, int newParam = 0);
Si il ne peut pas être facultative, vous devez utiliser la surcharge et supprimer l'option de la valeur pour 'otherValue'. Comme ceci:
void MyMethod(int value, int otherValue = 0);
void MyMethod(int value, int otherValue, int newParam);
Je suppose que vous voulez conserver l'ordre des paramètres.
Donc, en utilisant les paramètres facultatifs réduit le nombre de méthodes que vous devez avoir dans votre classe, mais est limitée dans la mesure où ils ont besoin pour être la dernière.
Mise à jour
Lors de l'appel de méthodes avec des paramètres optionnels, vous pouvez utiliser des paramètres nommés comme ceci:
void MyMethod(int value, int otherValue = 0, int newValue = 0);
MyMethod(10, newValue: 10); // Here I omitted the otherValue parameter that defaults to 0
Si les paramètres facultatifs donne l'appelant plus de possibilités.
Une dernière chose. Si vous utilisez la surcharge de méthode avec une mise en œuvre, comme ceci:
void MyMethod(int value, int otherValue)
{
// Do the work
}
void MyMethod(int value)
{
MyMethod(value, 0); // Do the defaulting by method overloading
}
Ensuite, lors de l'appel 'MyMethod" comme ceci:
MyMethod(100);
Donnera 2 appels de méthode. Mais si vous utilisez des paramètres optionnels, il y a seulement une mise en œuvre de la "MyMethod" et donc, un seul appel de méthode.