2009-09-13 20 views

risposta

16

si può fare questo:

DoSomething(10, new[] {"One", "Two", "Three"}); 

forniti tutti gli oggetti sono dello stesso tipo non è necessario specificare il tipo nella definizione del campo

+2

Perfetto! Potresti spiegare perché è necessario il nuovo []? Se l'ho fatto: string [] MyString = {"One", "Two", "Three"}; funziona bene? –

+1

è proprio come funziona la sintassi. non puoi farlo: var x = string [] {"One", "Two", "Three"}; ma puoi farlo var y = new [] {"One", "Two", "Three"}; –

+1

questi articoli sono molto utili. gli inizializzatori degli oggetti rendono il codice molto più pulito http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers .aspx e per ulteriori informazioni sulla tua domanda originale vedi questo http://msdn.microsoft.com/en-us/library/ms364047(VS.80).aspx#cs3spec_topic7 –

2

Prova questo:

DoSomething(10, new string[] {"One", "Two", "Three"}); 
2

Puoi costruirlo mentre lo passi così:

DoSomething(10, new string[] { "One", "Two", "Three"}); 
9

Se DoSomething è una funzione che è possibile modificare, è possibile utilizzare la parola chiave params per passare più argomenti senza creare un array. Accetterà anche gli array correttamente, quindi non c'è bisogno di "decostruire" un array esistente.

class x 
{ 
    public static void foo(params string[] ss) 
    { 
     foreach (string s in ss) 
     { 
      System.Console.WriteLine(s); 
     } 
    } 

    public static void Main() 
    { 
     foo("a", "b", "c"); 
     string[] s = new string[] { "d", "e", "f" }; 
     foo(s); 
    } 
} 

uscita:

 
$ ./d.exe 
a 
b 
c 
d 
e 
f 
+0

Anche questo è un suggerimento brillante! –

Problemi correlati