Jason. Cała informatyka w jednym miejscu!

Niestraszna Wam dalsza nauka "CSharpa"? Przekonajmy się :D. Oto poradnik jak wykonać prawidłowe przeciążanie metody w języku C#. Czynność także zaliczana do podstaw programowania, przynajmniej ja ją klasyfikuję jako część elementarną po paru latach praktyki. Zapraszam, dowiedzcie się więcej!

PRZECIĄŻANIE METODY W JĘZYKU C# NIE RÓŻNI SIĘ NICZYM OD OGÓLNIE PRZYJĘTEJ PRAKTYKI

Znacie Javę albo inny język stricte obiektowy? Jeśli tak, to macie temat z górki. Zachowanie takie same, działanie takie same. Nara :D!

A teraz część artykułu dla tych, którym jest to obce.

NA CZYM POLEGA PRZECIĄŻANIE METODY?

Przeciążanie (ang. overloading) to technika definiowania dwóch lub więcej metod noszących tę samą nazwę, ale różniących się listą parametrów formalnych i mogących mieć odmienne typy zwracanych wartości. Krócej i jaśniej się już nie da.

Warto zwrócić Waszą uwagę na sens powyższego tłumaczenia. Wszystkie metody, które mają nazywać się tak samo MUSZĄ mieć inne listy parametrów. Natomiast typy zwracanych wartości MOGĄ być takie same. MOGĄ, ale NIE MUSZĄ. Oto cała formułka na to, aby przeciążanie metody w języku C# zostało przepuszczone przez kompilator.

PRZYKŁAD KODU ŹRÓDŁOWEGO

Podaję przykładową sytuację. Weźmy chociażby implementację kalkulowania sześcianu podanej liczby. Pierwsze co się nasuwa na myśl, to taka postać funkcji:

public int Cube(int n)
{
	return n*n*n;
}

OK, składniowo wszystko się zgadza, kod się uruchomi. Takie wywołanie pójdzie:

Cube(6);

A co, gdybym chciał wstawić wartość zmiennoprzecinkową?

Cube(6.15);

Kiszka. Błąd kompilacji z powodu niekompatybilności typów danych, oczekiwanego i wprowadzonego! Przeciążanie metody w języku C# może nas skłonić do rzutowania typu, które i tak zaburzyłoby prawidłowym obliczeniem. Popatrzcie na taką treść, wyobrażając sobie że stawiacie tę drugą metodę obok powyższej (w jednym pliku źródłowym):

public double Cube(double n)
{
	return n*n*n;
}

Czy teraz wywołanie:

Cube(6.15);

zostanie przyjęte? Jak najbardziej :D! Ale to nie wersja metody akceptującej liczbę całkowitą zostanie wywołana, tylko ta druga! Właśnie Wam ukazałem jaką to daje korzyść.

Przeciążanie metody umożliwia nam zdefiniowanie wielu "dróg" czy też sposobów na wykonanie zawartych tam instrukcji, w celu legalnego wstawienia do wywołania parametru aktualnego jednego z kilku typów danych, które są do siebie zbliżone (generalnie, choć niekoniecznie). Kiedy korzysta się z metody, a ona zawiera kilka swoich odmian, kompilator "wskaże" tę wersję metody, która zgadza się z podanymi parametrami, od strony ich liczby i typów. Po podaniu liczby całkowitej, zostanie wywołana wersja metody oczekującej parametru typu "int", zaś zmiennoprzecinkowa wartość uruchomi wersję metody wymagającej parametru typu "double". O to chodzi tak w dużym skrócie.

Przeciążanie metody w języku C# jest zazwyczaj wykorzystywane w celu umożliwienia skorzystania z tych samych instrukcji używając innych parametrów. Często stosuje się tę technikę w stosunku do metod matematycznych, aby przyporządkować wszystkie wersje metody dla każdego liczbowego typu danych (tak jak pokazałem u góry) oraz dla konstruktorów klas (które także jak najbardziej możemy przeciążać) umożliwiając w ten sposób tworzenie obiektów na kilka sposobów.

Przeciążanie metody w języku C#

Przeciążąnie metody w języku C# to zdefiniowanie nowej metody o tej samej nazwie. Musi się różnić listą parametrów i może zwracać inny typ wartości.


To wszystko. Może się to wydawać niepotrzebne, jednak w miarę nabywania doświadczenia, może Wam się to przydać chociaż jeden raz w życiu.

PODOBNE ARTYKUŁY