69 votes

Puis-je attribuer une valeur par défaut à des paramètres ou à des paramètres facultatifs dans les fonctions C #?

Puis-je donner les paramètres par défaut pour le C#?

en C

  void fun(int i=1)
 {
   printf("%d",i);
 }

Nous pouvons donner les paramètres par défaut de la valeur? Est-il possible en C#. Si oui, pouvons-nous éviter de surcharger les fonctions? Merci d'Avance

MODIFIER

C'est toujours une mauvaise pratique pour ajouter un paramètre optionnel à une fonction existante. Si vous travaillez sur un projet qui est d'avoir reportez-vous à la classe ayant une fonction et nous avons changé un paramètre avec une valeur facultative, il peut lancers moment de l'exécution, sauf que la méthode n'est pas trouvée.

c'est parce que nous considérons que si l'on ajoute un supplément de valeur facultative, il n'y a pas de changement de code requise si la fonction est à utiliser dans de nombreux endroits.

function Add(int a,int b); ce sera appelée à l'aide de cette façon Add(10,10);

mais si on ajoute une option param comme ceci, function Add(int a,int b,int c=0); ensuite, le compilateur s'attend Add(10,10,0);.

En fait, nous appelons, comme c' Add(10,10) et cette fonction n'est pas disponible dans cette classe, et provoque une exception.

Cela se produit lors de l'ajout d'un nouveau paramètre à une fonction appelée par beaucoup d'endroits et je ne pas sûr que ce sera le cas à chaque fois. Mais je vous suggère de surcharge de la fonction.

Nous avons toujours besoin de surcharger la méthode qui a une option param. Aussi, si vous êtes travailler avec des fonctions ayant plus d'un paramètre facultatif , alors il est bon de passer la valeur à l'aide du nom du paramètre.

function Add(int a,int b,int c=0); Il est toujours bon d'appeler cette fonction à l'aide de la manière suivante. Add(10,20,c:30);

73voto

Chuck Points 6314

C’est exactement ce que vous faites en C #, mais la fonctionnalité a été ajoutée pour la première fois dans .NET 4.0.

39voto

Donut Points 32892

Oui. Voir Nommé et Arguments Optionnels. Notez que la valeur par défaut doit être une constante, de sorte que c'est OK:

public string Foo(string myParam = "default value") // constant, OK
{
}

mais ce n'est pas:

public void Bar(string myParam = Foo()) // not a constant, not OK
{
}

27voto

Frederik Gheysels Points 36354

C'est seulement possible à partir de C # 4.0

Toutefois, lorsque vous utilisez une version de C # antérieure à 4.0, vous pouvez contourner ce problème en utilisant des méthodes surchargées:

 public void Func( int i, int j )
{
    Console.WriteLine (String.Format ("i = {0}, j = {1}", i, j));
}

public void Func( int i )
{
    Func (i, 4);
}

public void Func ()
{
    Func (5);
}
 

(Vous pouvez également passer à la version C 4.0 du cours).

5voto

ChrisF Points 74295

Oui, mais vous devrez être en utilisant .NET 3.5, C# 4.0 pour obtenir cette fonctionnalité.

Cette page MSDN a plus d'informations.

0voto

Øyvind Bråthen Points 25211

C'est une fonction de C# 4.0, mais n'a pas été possible sans l'aide de la fonction de surcharge avant cette version.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X