2013-04-24 13 views
7

Ho un metodo C# con una lista di argomenti a lunghezza variabile dichiarate utilizzando la parola chiave params:parametri denominati e la parola chiave params in C#

public void VariableLengthParameterFunction (object firstParam, 
              params object[] secondParam) 

C'è un modo di utilizzare parametri denominati quando si chiama il metodo?

+2

cosa desideri realizzare? – Default

+0

solo cercando di usare i parametri nominati senza dover cambiare la firma del metodo – marosoaie

risposta

20

si può chiamare con il parametro di nome come questo:

VariableLengthParameterFunction(
    secondParam: new object[] { 5, 7, 3, 2 }, 
    firstParam: 4); 
+0

Questo non sembra funzionare con gli strumenti di msbuild 2015, il secondparam si perde se si utilizza la scorciatoia per un singolo elemento? (funziona comunque con devenv) –

0

EDIT: ho pensato che si desidera accedere alla matrice params object[] secondParam utilizzando parametri denominati.

Attualmente solo il codice all'interno del metodo sa cosa può contenere secondParam. Dalla semplice firma del metodo non esiste alcun collegamento tra lo object[] ei nomi/tipi per ciascun elemento all'interno di tale array.

Inoltre, dal momento che si sta utilizzando la parola chiave params, non c'è modo di fornire secondParam[1] senza fornire un valore per secondParam[0] (o null).

Forse è possibile creare un sovraccarico che prende i parametri denominati e che crea lo object[] e quindi chiama questo metodo. O viceversa.