Qu'est-ce qu'un exemple réel de quand utiliser params comme argument de méthode?

StackOverflow https://stackoverflow.com/questions/5822719

  •  26-10-2019
  •  | 
  •  

Question

Si je comprends bien, params est juste du sucre syntaxique que « sous le capot » vous donne simplement un tableau du type que vous spécifiez.

D'abord, quand voulez-vous utiliser?

Deuxièmement, pourquoi voudriez-vous l'utiliser au lieu de simplement déclarer un argument de tableau?

Était-ce utile?

La solution

Math.Min prend exactement deux arguments. Ceci est une limitation stupide. Beaucoup d'autres langues vous permettent d'écrire:

double x, y, z, w;
double least = min(x, y, z, w);

Si vous voulez écrire une fonction min qui pourrait être utilisé comme ça, vous voudriez utiliser params.

Autres conseils

Un exemple évident se trouve dans une méthode comme String.Format(). Cette déclaration à l'aide params est facile à suivre:

string.Format("Your name is {0}, {1}", lastName, firstName);

Mais sans params il est un peu plus difficile:

string.Format("Your name is {0}, {1}", new string[] { lastName, firstName });

Je me retrouve avec beaucoup params pour les fonctions de chaîne comme celles-ci. Je l'utilise juste pour améliorer la lisibilité du code.

Une façon que je l'ai utilisé est en passant des requêtes SQL hors de ma classe d'emballage. Je vais avoir une sql avec un nombre variable de paramètres en elle. De cette façon, je peux énumérer tous les paramètres que je envoie la requête plutôt que de créer un tableau en premier.

    SQLWrapper.Query(" some sql with parameters", new SqlParameter("@param1", val1),
                                                  new SqlParameter("@param1", val1),
                                                  new SqlParameter("@param1", val1));

Bien mieux que l'alternative:

SQLWr

apper.Query(" some sql with parameters", new SqlParameter[]{new SqlParameter("@param1", val1),
                                                      new SqlParameter("@param1", val1),
                                                      new SqlParameter("@param1", val1)});

est agréable d'avoir lorsque vous exécutez dans une situation où vous avez besoin d'un nombre variable d'arguments.

Un exemple de la bibliothèque de classes de base est String.Split(params char[] separator), vous permettant d'écrire, par exemple:

var segs = myString.Split(',',';',' ');

plutôt que

var sets = myString.Split(new char[] {',', ';', ' '});

La principale non plus jolie / plus facile de comprendre pourquoi je me trouve en utilisant params est dans l'exécution des procédures stockées.

Prenons le cas où vous avez plusieurs centaines de procédures stockées dans une base de données. Ensuite, vous avez vraiment seulement deux choix

1: code Recopiez individuellement pour chaque procédure stockée qui prendrait des mois

2: Créer une méthode générique d'exécuteur testamentaire qui exécutera une procédure stockée et prendre un nombre et type de paramètres par exemple

.
databaseHelper.ExecuteStoredProcedure(
                "myStoredProecdure",
                DbProviderHelper.StringParameter("@parameter_string", somestring),
                DbProviderHelper.BoolParameter("@parameter_string", somebool),
                DbProviderHelper.IntParameter("@parameter_int", someint));   
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top