J'ai une méthode qui prend un tas de paramètres optionnels et je surcharge la méthode pour fournir les différentes combinaisons de signatures. Intellisense apparaît avec un tas de signatures différentes mais je pense que cela semble assez confus maintenant parce qu'il y a différentes combinaisons que je dois fournir, et pas seulement en construisant des paramètres à la fin de la signature de la méthode. Est-ce que je ne devrais pas surcharger ma méthode et m'en tenir à une signature pour que l'utilisateur de ma méthode passe des valeurs nulles? Cela rendrait la signature plus claire mais rendrait le code appelant plus désordonné.Paramètres optionnels
Répondre
Etes-vous limité à utiliser C# 1-3? C# 4 prend en charge les paramètres facultatifs et les arguments nommés ...
Jusque-là, vous devriez probablement soit bâton avec une surcharge ou créer une classe séparée avec des propriétés mutables, par exemple
FooOptions options = new FooOptions { Name="Jon", Location="Reading" };
Foo foo = new Foo(options);
Cela peut être fait dans une déclaration si vous voulez ... et si certaines des propriétés sont obligatoires, puis créez un seul constructeur dans FooOptions
qui prend tous.
En C# 4 vous seriez en mesure d'écrire:
Foo foo = new Foo(name: "Jon", location: "Reading");
si le constructeur a été écrit comme
public Foo(string name,
int age = 0,
string location = null,
string profession = null)
arguments nommés et les paramètres facultatifs devrait rendre beaucoup plus facile de construire des types immuables avec des propriétés facultatives dans C# 4 :)
Pensez à l'argument params de la méthode C#.
void test(params object []arg) {
..
}
Presque certainement la mauvaise approche: vous perdez la sécurité de type à moins que tous vos paramètres sont du même type, et vous perdez la moindre idée de quel paramètre signifie quoi. –
Cela vous fera perdre la sécurité de type et nécessite la mise en boîte des types de valeur. Les deux ne sont généralement pas souhaitables. –
Vous pouvez utiliser le params keyword si les définitions de fonction ne varient que de la longueur (et non l'ordre, sinon ce ne sera pas la meilleure approche) .Ensuite dans la fonction que vous pouvez configurer les valeurs que vous avez besoin en fonction de l'entrée des paramètres
Je ne considèrerais 'params' que si les arguments sont du même type. Voir aussi le commentaire de Jon sur une autre réponse. –
Ouais, c'est un peu ce que je mentionnais, que seulement si l'ordre des types est le même cela fonctionnerait vraiment. Sinon, les réponses de Jon sont la voie à suivre – SwDevMan81
Cela ne marchera pas dans mon cas car j'ai besoin d'une signature fixe. Ce serait bien si je passais dans certaines données dont j'avais besoin sous la forme d'un tableau comme string.Format – Charlie
- 1. Python paramètres optionnels
- 2. Comment gérer les paramètres optionnels dans Moose?
- 3. Comment COM prend-il en charge les paramètres optionnels?
- 4. requête de recherche sql pour plusieurs paramètres optionnels
- 5. Faire face à plusieurs paramètres optionnels avec mod_rewrite
- 6. Paramètres optionnels avec classe SoapClient PHP en mode wsdl
- 7. Groupes optionnels Regex?
- 8. Javascript Fonctions et arguments optionnels
- 9. PHP, appelant une méthode d'objet ADO qui a des paramètres optionnels
- 10. en utilisant la méthode Reflector.Invoke sur les fonctions avec les paramètres optionnels
- 11. Y a-t-il des paramètres optionnels de type PHP en C#?
- 12. Comment créez-vous des arguments optionnels dans PHP?
- 13. Variables d'instance python en tant qu'arguments optionnels
- 14. Arguments optionnels dans Objective-C 2.0?
- 15. usine JavaScript avec des arguments optionnels
- 16. Paramètres facultatifs dans le service Web ASP.NET
- 17. Est-ce que C# 4.0 et une combinaison de paramètres optionnels et de surcharges vous avertissent de l'ambiguïté?
- 18. F #: Pourquoi est-ce que je ne peux pas utiliser les paramètres optionnels dans les fonctions lâches?
- 19. action avec ensemble de paramètres fixes dans l'URL et un ensemble de paramètres optionnels soit de la poste ou de querystring
- 20. Comment envoyer des arguments optionnels à une autre fonction/méthode?
- 21. Codage de la procédure stockée pour l'écran de recherche avec plusieurs critères optionnels
- 22. C# Paramètres Paramètres Rembering
- 23. Paramètres nommés/facultatifs dans Delphi?
- 24. Existe-t-il un moyen d'envoyer des paramètres facultatifs à une action?
- 25. Puis-je avoir des paramètres réguliers avec CGI :: Application :: Dispatch?
- 26. Paramètres iPhone
- 27. expressions régulières - correspond à toutes les ancres avec des attributs optionnels
- 28. Pourquoi les arguments optionnels typés ne peuvent-ils pas avoir la valeur par défaut Null?
- 29. Comment spécifier seulement quelques arguments optionnels lors de l'appel de la fonction dans ColdFusion?
- 30. Comment faire une séquence d'éléments optionnels qui doivent être en ordre dans un schéma XML?
Oui, sur C# 2 J'ai peur, je dois attendre les paramètres C# 4 et optionnels. – Charlie
Ouais, ce sera vraiment pratique – SwDevMan81