2009-09-13 13 views

Odpowiedz

16

można to zrobić:

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

dostarczone wszystkie obiekty są tego samego typu, nie trzeba określić typ w definicji tablicy

+2

Perfect! Czy możesz wyjaśnić, dlaczego nowy [] jest wymagany? Jeśli tak: string [] MyString = {"One", "Two", "Three"}; działa dobrze? –

+1

to tylko sposób działania składni. nie możesz tego zrobić: var x = string [] {"One", "Two", "Three"}; ale możesz to zrobić var ​​y = new [] {"One", "Two", "Three"}; –

+1

te artykuły są bardzo przydatne. inicjatory obiektów tworzą kod sooo many cleaner http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers .aspx i więcej na oryginalnym pytaniu zobacz ten http://msdn.microsoft.com/en-us/library/ms364047(VS.80).aspx#cs3spec_topic7 –

2

Spróbuj tego:

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

Można go skonstruować, przekazując w następujący sposób:

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

Jeśli funkcja DoSomething jest funkcją, którą można zmodyfikować, można użyć słowa kluczowego params, aby przekazać wiele argumentów bez tworzenia tablicy. Przyjmuje również poprawnie tablice, więc nie ma potrzeby "dekonstrukcji" istniejącej macierzy.

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); 
    } 
} 

wyjściowa:

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

To także świetna propozycja! –

Powiązane problemy