C# 4.0 – parametr domyślny

W mojej pierwszej “zawodowej” pracy na stanowisku programisty miałem okazję programować w VB.NET. Wbrew wielu opiniom uważam, że to bardzo przyjazny język i programuje się w nim bardzo fajnie.

Po przesiadce na C#, poza koniecznością wstawiania średnika na końcu każdej linii, zaskoczył mnie brak możliwości zdefiniowania parametru domyślnego w metodzie. Trochę to zajęło, ale i C# w końcu “dorobił” się tej funkcjonalności. Parametry domyślne w C# zostały wprowadzone w wersji C# 4.0, czyli w .NET 4.0.

Parametry domyślne przydają się bardzo często w sytuacji, kiedy musimy przeciążyć jakąś metodę. Np. zamiast pisać:

możemy zdefiniować jedną metodę i w definicji jej parametrów podać wartości domyślne:

Po takiej deklaracji poniższe wywołania są jak najbardziej prawidłowe:

Wprowadzenie wartości domyślnych w metodzie MyMethod znacznie uprościło kod klasy MyClass, nie zmieniając jednocześnie sposobu wywołania tej metody.

A teraz załóżmy, że chcemy wywołać MyMethod jedynie z parametrem value2. Standardowo znowu byśmy przeciążyli metodę MyMethod. A z parametrem domyślnym? Takie wywołanie nie zadziała, ponieważ pierwszym parametrem metody jest int:

Jeżeli jednak podamy dokładnie, do którego parametru przypisujemy wartość, to obejdziemy się bez przeciążania:

W ten sam sposób możemy zmienić kolejność przekazywania parametrów:

Mechanizm definiowania wartości domyślnych znacznie upraszcza nasz kod, warto więc z niego korzystać.

8 Responses

  1. Pingback: dotnetomaniak.pl
  2. wojtek(szogun1987) 21 lutego 2011 / 08:23

    Szkoda że dopiero teraz stwierdzili że to jednak dobry pomysł ;]. Chociaż w Javie do dzisiaj nie chcą tego wprowadzić.

  3. Łukasz Gąsior 21 lutego 2011 / 08:33

    @wojtek – lepiej późno niż wcale :)

  4. Kamil 21 lutego 2011 / 09:22

    Świetna sprawa dzięki za art.

  5. Michał Franc 22 lutego 2011 / 15:59

    Kiedyś przeczesywałem sieć z googlem szukająć sposobu jawnego przypisywania domyślnego parametru … nie udało się :D Tutaj wszystko ładnie podane na tacy. Dzięki za post.

  6. yvisek 23 marca 2011 / 12:43

    Dzięki wielkie! Już się (niestety) przyzwyczaiłem, że domyślnych nie ma, że nawet tego już nie szukałem, a to bardzo upraszczający życie “bajer”!

    Dzięki wielkie!

  7. 3P 12 kwietnia 2011 / 20:31

    Zapomniałeś napisać o tym jakie zagrożenia to powoduje.

Comments are closed.