11
votes

Paramètres de la méthode par défaut en C #

Comment puis-je faire une méthode des valeurs par défaut pour les paramètres?


4 Réponses :


8
votes

Vous les déclarez simplement les déclarer avec les valeurs par défaut - elles sont appelées Paramètres facultatifs A>:

 public void myMethod(string param1 = "default", int param2 = 3)
 {
 }


0 commentaires

12
votes

C # 4.0 vous permet d'utiliser Arguments nommés et optionnels : < Pré> xxx

dans les versions précédentes, vous pouvez Simulez les paramètres par défaut en utilisant la surcharge de la méthode.


0 commentaires

16
votes

Vous ne pouvez faire que cela en C # 4, qui a introduit à la fois nommé arguments et Paramètres facultatifs :

public void Foo(int x = 10)
{
    Console.WriteLine(x);
}

...
Foo(); // Prints 10
  • Le constructeur sans paramètre d'une valeur de valeur li>
  • par défaut (t) code> pour un type t code> li> ul>

    Notez également que la valeur par défaut est intégrée à l'assemblage EM> de l'appelant (en supposant que vous omettez l'argument correspondant) - donc si vous modifiez la valeur par défaut sans reconstruire le code d'appel, vous. ll Voir toujours l'ancienne valeur. P>

    Ceci (et d'autres nouvelles fonctionnalités du C # 4) sont couverts dans la deuxième édition de C # en profondeur . (Chapitre 13 Dans ce cas.) P> p>


2 commentaires

Lien vers le C # en profondeur Le livre est faux. Le site Web manning.com renvoie un fichier PHP qui redirige vers un site Web qui ne peut pas être chargé.


@Nikolaykostov: Humbug - programme d'affiliation a changé il y a quelque temps. J'ai inclus un lien plus simple ici.



4
votes

Une solution simple consiste à surcharger la méthode: xxx


3 commentaires

C'est toujours une bonne solution, même en C # 4. Un avantage est que les valeurs par défaut sont intégrées dans votre montage plutôt que les appelants; Voir la réponse de Jon pour plus de détails.


@Dan: Je suis devenu de plus en plus sceptique sur le problème réel dommages du "Vous ne pouvez pas modifier les valeurs par défaut". Parce que pour la plupart du code, je m'attends à ce que toute l'application soit recompanée quand même . C'est quelque chose qui vaut la peine de savoir, mais je ne pense pas que ce soit vraiment un problème énorme.


@Jon, je suis enclin à être d'accord avec vous, car je pense que ce serait probablement une mauvaise pratique de s'appuyer sur des valeurs par défaut particulières, dans tous les cas, comme cela semblerait indiquer que la nature de l'API a changé. Si tel est le cas, le client doit probablement changer de toute façon.