Che cosa è un vero e proprio esempio di quando utilizzare params come argomento metodo?

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

  •  26-10-2019
  •  | 
  •  

Domanda

A quanto ho capito, params è lo zucchero sintattico che "sotto il cofano" semplicemente ti dà una matrice di tipo specificato.

In primo luogo, quando si usa questo?

In secondo luogo, perché si usarlo invece di dichiarare un argomento array?

È stato utile?

Soluzione

Math.Min prende esattamente due argomenti. Questa è una limitazione stupido. Molte altre lingue consentono di scrivere:

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

Se si voleva scrivere una funzione min che potrebbe essere utilizzato in quel modo, che ci si vuole utilizzare params.

Altri suggerimenti

Un esempio evidente può essere trovato in un metodo come String.Format(). Questa affermazione utilizzando params è facile da seguire:

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

Ma senza params è un po 'più difficile:

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

mi ritrovo con params sacco per le funzioni di stringa come questi. Io lo uso solo per migliorare la leggibilità del codice.

Un modo che ho usato è di passaggio query SQL via alla mia classe wrapper. Avrò qualche sql con un numero variabile di parametri in esso. In questo modo posso solo elencare tutti i parametri che sto inviando con la query piuttosto che creare una matrice prima.

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

Molto più bello che l'alternativa:

SQLWr

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

Il suo bello avere quando si esegue in una situazione in cui avete bisogno di un numero variabile di argomenti.

Un esempio dalla libreria classe base è String.Split(params char[] separator), che consente di scrivere, per esempio:

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

anziché

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

Il principale non più bella / più facile da capire ragione mi trovo con params è in esecuzione di stored procedure.

Prendiamo il caso in cui si dispone di diverse centinaia di stored procedure in un database. Allora hai davvero solo due scelte

1: Scrivere il codice individuale per ogni stored procedure che richiederebbe mesi

2: Creare un metodo esecutore generico che eseguire qualsiasi procedura immagazzinata e prendere qualsiasi numero e tipo di parametri per esempio

.
databaseHelper.ExecuteStoredProcedure(
                "myStoredProecdure",
                DbProviderHelper.StringParameter("@parameter_string", somestring),
                DbProviderHelper.BoolParameter("@parameter_string", somebool),
                DbProviderHelper.IntParameter("@parameter_int", someint));   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top