2013-02-28 16 views
5

Widziałem parametr params więcej razy, niż mogę powiedzieć i zawsze go usuwałam bez zastanawiania się nad jego znaczeniem. Teraz poznałem jego cel. Właśnie dowiedziałem się, że parametr params musi być ostatnim na liście parametrów. Ale właśnie tego dowiedziałem się o parametrach, które mają określoną wartość domyślną. Przykład:params Parametr z domyślnymi wartościami parametrów

MyMethod(string Name, int blah=0). 

Więc pytanie brzmi, czy muszę określić wartość domyślną, jak powyżej, podczas konieczności korzystania params, można to zrobić? Jeśli tak, to które z nich należy zadeklarować jako ostatnie? Przykład:

MyMethod(int blah=0, params string[] variableData). 

Dzięki za twoją pomoc ponownie. James

+0

Dlaczego nie próbować? –

+0

http://stackoverflow.com/questions/3948971/c-sharp-4-0-optional-parameters-and-params-do-not-work-together – Guy

+0

Myślę, że to wszystko w porządku, aby to zrobić. Kiedy spróbujesz to. –

Odpowiedz

3

Twój przykład jest poprawny:

public void TestMethod(string name = "asdasd", params int[] items) 
{ 
} 

params musi być ostatni, bez względu na to parametr są wykorzystywane wcześniej.

+0

Witaj MarinJuraszek. Dziękuję za prostotę odpowiedzi. Właśnie kupiłem nowy laptop zeszłej nocy i nareszcie mogłem przetestować moje scenariusze, aby zobaczyć wyniki. Widzę, że masz absolutną rację! – iDevJunkie

4

Tak, params stanowią szczególny przypadek tutaj - oni jedyna sytuacja, w której parametr bez wartość domyślna może przyjść po jednej z wartości domyślnej.

Jednak nie można następnie wywołać metodę i skorzystać z boku params rzeczy (dla niepustego tablicy) bez jednoczesnego określenia opcjonalny parametr:

MyMethod(5, "x", "y");       // Fine, no defaulting 
MyMethod(variableData: new string[] { "x", "y"}); // Default for blah 
MyMethod();          // Default for blah, empty variableData 
MyMethod(new string[] { "x, "y" });    // Invalid 
MyMethod("x", "y");        // Invalid 
+0

Zabawny fakt: po dodaniu domyślnych wartości parametrów i ponownemu skompilowaniu kompilator zaokrągla i wstawia te domyślne parametry do wywołań swojej metody - odkrył to na własnej skórze. – JerKimball

+0

@JerKimball: Tak, to by było. Tak działają parametry domyślne - są one wypiekane w witrynie połączenia. –

Powiązane problemy