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ć:
class MyClass
{
public MyObject MyMethod()
{
return MyMethod(1, "value");
}
public MyObject MyMethod(int value1)
{
return MyMethod(value1, "value");
}
public MyObject MyMethod(int value1, string value2)
{
return repository.GetMyObject(value1, value2);
}
}
możemy zdefiniować jedną metodę i w definicji jej parametrów podać wartości domyślne:
public MyObject MyMethod(int value1 = 1, string value2 = "value")
{
return repository.GetMyObject(value1, value2);
}
Po takiej deklaracji poniższe wywołania są jak najbardziej prawidłowe:
myClass.MyMethod(); myClass.MyMethod(2); myClass.MyMethod(2, "new value");
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:
myClass.MyMethod("new value");
Jeżeli jednak podamy dokładnie, do którego parametru przypisujemy wartość, to obejdziemy się bez przeciążania:
myClass.MyMethod(value2: "new value");
W ten sam sposób możemy zmienić kolejność przekazywania parametrów:
myClass.MyMethod(value2: "new value", value1: 2);
Mechanizm definiowania wartości domyślnych znacznie upraszcza nasz kod, warto więc z niego korzystać.



Pingback: dotnetomaniak.pl
Pingback: C# 4.0 - parametr domyślny - develway.pl