Comment passer des paramètres facultatifs sur une méthode en C #?
Supposons que j'ai créé une méthode appelée Sendcommand P> maintenant je veux appeler cette méthode dans la méthode principale comme p> Comment réaliser cela? p> p>
13 Réponses :
pré .NET 4 Vous devez surcharger la méthode: .NET 4 introduit la prise en charge des paramètres par défaut, ce qui vous permet de faire tout cela en une seule ligne. P> < Pré> XXX PRE> D'ailleurs, dans la question que vous l'avez écrite, vous n'appelez pas la méthode dans votre premier exemple non plus que: p> utilise toujours un seul paramètre qui est la concaténation des deux chaînes. p> p>
J'ai pensé à cela, mais dans ce cas, je ne suis pas sûr d'avoir une surcharge appelant l'autre avec "null" est nécessaire, il semble probable qu'un ensemble de commandes nécessiterait le paramètre et qu'un autre ensemble ne le ferait pas, donc chacun La surcharge gère simplement un ensemble différent de commandes.
Il y a trois solutions faciles à celui-ci: p>
Créer une autre méthode qui appelle le premier?
Surcharger la fonction. plutôt que de vérifier la branche conditionnelle. Quelque chose comme ceci:
Utilisez l'attribut Params: puis vous pouvez l'appeler comme ceci: p> ou si vous utilisez c # 4.0 Vous pouvez Utilisez la nouvelle fonctionnalité des arguments facultatifs: p>
Ajout de ce commentaire ici où on peut le voir - veuillez ne pas mettre en œuvre une seule méthode qui fait de nombreuses choses complètement différentes. Une méthode devrait à gros parler d'une tâche. Cela signifie que des commandes simples peuvent être dans des méthodes distinctes - ou si des commandes sont complexes, créez une classe pour chaque commande. Ceci est destiné à la maintenabilité, à la lisibilité, à la mise hors service et plus encore. Sendcommand devrait également être nommé de manière appropriée; Est-ce que cela envoie réellement une commande quelque part? Si nécessaire, cela pourrait être appelé Parsecommand - il analyse et laisse l'exécution à d'autres méthodes / classes.
Notez également que, dans le cas où vous avez plusieurs arguments facultatifs, vous pouvez utiliser un point de points pour désigner le paramètre facultatif que vous parlez. Ex.: Sendcommand ("CMD", Strfilename: "ABC");
Vous pouvez le faire de quelques égards. Si vous utilisez .NET 4.0, vous pouvez utiliser des paramètres facultatifs sur la méthode: sinon, vous pouvez simplement créer une autre méthode qui appelle la méthode que vous avez déjà, mais en passant les paramètres par défaut que vous avez Voulez-vous être facultatif: p>
C'est surcharge, ne pas remplacer :)
Paramètres facultatifs La fonctionnalité vient en C # 4.0 Ici est le lien. Sinon, vous devez écrire une fonction surchargée. p>
La réponse évidente pour cela devrait être, ne le fais pas de cette façon b>. P>
Vous devez soit avoir une méthode distincte pour chaque commande, ou une classe de base de commande et une classe dérivée distincte pour chaque commande, avec une méthode d'exécution. P>
C'est mauvais design pour avoir une méthode qui gère toutes les commandes imaginables. P>
Vous ne voulez vraiment pas un Sendcommand () code> pour gérer toutes les commandes possibles. P>
Si j'ai 100 commandes, je dois écrire 100 méthodes dans ce cas?
Oui. Il serait préférable d'avoir 100 classes en réalité - un fichier avec 100 méthodes est trop nombreux. Ces deux options sont cent fois mieux qu'une méthode qui gère l'exécution de 100 commandes! Pouvez-vous imaginer combien de temps cette méthode serait, à quel point il serait difficile de déboguer, combien de paramètres facultatifs qu'il faudrait avoir: probablement en retrait tant il sera difficile de voir quels {ou} sont ceux-ci. Certainement, définitivement, vous ne voulez certainement pas une méthode pour gérer toutes les commandes. Une par commande ou une classe par commande.
Toutes les réponses données sur cette page sont des moyens valides d'accepter des paramètres facultatifs, mais dans de nombreux cas, il s'agit d'un signe que votre méthode tente de faire trop.
Dans de nombreux cas, vous pourriez être mieux avec Les méthodes sans ambiguïté suivantes ... p>
Vous pouvez utiliser les paramètres mots-clés: et vous pouvez l'utiliser comme: p>
Les gens,
Je regardais ce fil, essayant de résoudre un problème qui n'existe pas réellement, car c # "passe simplement par" un tableau des params! Ce que je ne savais pas avant d'avoir juste essayé. P>
Voici un SSCCE: P>
CSharpLanguageDesigners.ToList().ForEach(dude=>dude.Kudos++);
Utilisation vérifier 4 différentes manières Pour faire un paramètre de méthode en option en C # P> [option] code> attribut de runtime.interopservices em> noms de noms n'a pas encore été proposé ici. P>
Dupliqué possible de Comment utiliser des paramètres facultatifs dans C #?
S'il vous plaît voir ma réponse: N'utilisez pas une seule méthode, utilisez une méthode par commande ou une classe de commande distincte pour chaque commande.