C # supporta un numero variabile di argomenti e come?

C # supporta un numero variabile di argomenti?

Se sì, in che modo C # supporta il numero variabile di argomenti?

Quali sono gli esempi?

In che modo sono utili gli argomenti variabili?

EDIT 1 : quali sono le restrizioni su di esso?

EDIT 2 : La domanda non riguarda il parametro opzionale Ma parametro variabile

Sì. L’esempio classico è 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 passerebbe i parametri in un ambiente a riga di comando a un programma, dove li si passa come stringhe. Il programma deve quindi convalidarli e assegnarli correttamente.

restrizioni:

  • È consentita una sola parola chiave params per metodo
  • Deve essere l’ultimo parametro.

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


Anche uno dei più classici, è chiamato overloading di metodo . Probabilmente li hai già usati 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 importante il più entusiasmante: Argomenti opzionali

 //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

C # supporta matrici di parametri a lunghezza variabile usando 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(); } 

Ci sono più informazioni qui .

Sì, parametri :

 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 object IEnumerable.

Immagino tu intenda un numero variabile di parametri del metodo . 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 anche per gli array
  • Ce n’è solo uno per ogni metodo
  • Devono arrivare per ultimi nella lista dei parametri

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