>visto che passando
>come parametro un array di object, posso metterci all'interno
>quanti parametri voglio e di tipi diversi da poter recuperare
>opportunamente tramite casting all'interno del metodo....mi sembra
>proprio inutile questo params...ma se esiste, ci sarà un motivo?
C'è una differenza sostanziale fra ciò che tu dici e ciò che params fa ed è spiegato in questo breve codice d'esempio:
private void CallMethod()
{
Test1(1,2,3); // Questa chiamata fallisce perchè prevede un overload
Test2(1,2,3); // Questa chiamata tramite params funziona
return;
}
private void Test1(int[] a)
{
return;
}
private void Test2(params int[] a)
{
return;
}
Il metodo Test1 è l'array di int (o object) tua soluzione, il Test2 invece fa uso del params. La keyword params è fatta apposta per simulare un numero variabile di parametri, mentre l'uso di array è un'altra cosa che può essere anche usata come artifizio per simulare anch'esso l'uso di parametri opzionali ma è una cosa ben diversa.
Infatti a compile time per usare il tuo metodo dovrai creare un array e impacchettargli all'interno i valori, mentre chiamando il metodo che fa uso di params puoi scrivere inline tutti i parametri che vuoi esempio:
Test2(1,2,3);
Test2(1,2,3,4,5);
In definitiva, non è così inutile come dici tu.
Ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/