2012-03-02 11 views
38

Il C# supporta un numero variabile di argomenti?Il C# supporta un numero variabile di argomenti e come?

Se sì, in che modo C# supporta la variabile no di argomenti?

Quali sono gli esempi?

Come sono utili gli argomenti variabili?

MODIFICA 1: Quali sono le restrizioni su di esso?

EDIT 2: La questione non si tratta di param facoltativo ma variabile Param

risposta

60

Sì. L'esempio classico wourld essere il params object[] args:

//Allows to pass in any number and types of parameters 
public static void Program(params object[] args) 

Un tipico caso d'uso sarebbe il passaggio di parametri in un ambiente riga di comando per un programma, dove si passa come stringhe. Il programma deve quindi convalidarli e assegnarli correttamente.

Restrizioni: è consentito

  • solo params parola chiave per ogni metodo
  • Deve essere l'ultimo parametro.

EDIT: Dopo aver letto le tue modifiche, ho fatto il mio. La parte seguente riguarda anche i metodi per ottenere un numero variabile di argomenti, ma penso che stavate davvero cercando il modo params.


anche uno di quelli più classici, si chiama metodo sovraccarico. Probabilmente avete usato loro già molto:

//both methods have the same name and depending on wether you pass in a parameter 
//or not, the first or the second is used. 
public static void SayHello() { 
    Console.WriteLine("Hello"); 
} 
public static void SayHello(string message) { 
    Console.WriteLine(message); 
} 

ultimo ma non meno più che escono uno: argomenti facoltativi

//this time we specify a default value for the parameter message 
//you now can call both, the method with parameter and the method without. 
public static void SayHello(string message = "Hello") { 
    Console.WriteLine(message); 
} 

http://msdn.microsoft.com/en-us/library/dd264739.aspx

+0

come passare parametri tramite RPC da Java con il formato dati JSON? –

10

Sì, params:

public void SomeMethod(params object[] args) 

params deve essere l'ultimo argomento e può essere di qualsiasi tipo. Non sono sicuro se deve essere un array o solo un oggetto IEnumerable.

12

C# supporta matrici di parametri a lunghezza variabile utilizzando la parola chiave params.

Ecco un esempio.

public static void UseParams(params int[] list) 
{ 
    for (int i = 0; i < list.Length; i++) 
    { 
     Console.Write(list[i] + " "); 
    } 
    Console.WriteLine(); 
} 

C'è di più informazioni here.

6

Immagino si intenda un variable number of method parameters. Se è così:

void DoSomething(params double[] parms) 

(o mescolato con parametri fissi)

void DoSomething(string param1, int param2, params double[] otherParams) 

Restrizioni:

  • Devono essere tutti dello stesso tipo (o di un tipo di bambino), come è vero per anche gli array
  • Ce ne può essere uno solo per ciascun metodo
  • Devono arrivare per ultimi nel parametro li st

Questo è tutto quello che riesco a pensare al momento anche se potrebbero essercene altri. Controlla la documentazione per maggiori informazioni.

Problemi correlati