W poniższym poście poruszymy temat metod. Od definicji przez wywołanie do parametrów.

Co to jest metoda?

Metoda jest przede wszystkim blokiem kodu, ale w głównej mierze to grupa poleceń, która ma za zadanie wykonać określone działanie. Każdy program w języku C# zawiera co najmniej jedną klasę z metodą główną, która nazywa się Main().

Mamy dwie możliwości użycia metody należy ją:

  • zdefiniować;
  • wywołać.

Definiowanie metod

 

Kiedy zaczniemy definiować metody, w pierwszej kolejności należy określić składniki struktury tej metody bez których metoda nie zadziała a kompilator zwróci błąd.

Składnia:

Poniżej opis składowych struktury metod:

  • modyfikator_dostępu – definiuje widoczność zmiennej lub metod;
  • zwracany_typ – metoda może zwracać wartość. Typ ten określa jaki rodzaj wartości zostanie zwrócony. Jeżeli metoda nie zwraca określonej wartości, to typem zwracanym jest void;
  • nazwa_metody – nazwa metody jest unikatowa oraz ważna jest wielkość liter (case sensitive). Nazwa taka nie może być identyczna z pozostałmi identyfikatorami zdefniowanymi w klasie;
  • lista_parametrów – parametry umieszczone są w nawiasie. Pozwalają one na przekazywanie oraz zwracanie danych z metody. Lista parametrów danej metody odnosi się do typu, kolejności oraz liczby parametrów w metodzie. Parametry są opcjonalne, metoda nie musi ich zawierać w swojej definicji;
  • wnętrze_metody – zawiera zestaw poleceń niezbednych do wykonania określonego działania.

Przykład:

Powyższy przykład pokazuję metodę FindMax(), która przyjmuje dwie wartości całkowite oraz zwraca większą z nich. Modyfikator dostępu metody to public, dzięki czemu mam do niej dostęp z zewnątrz klasy używając instancji tej klasy.

Wywoływanie metod

 

Metoda może zostać wywołana przy użyciu jej nazwy.

Poniższy przykład pokazuje takie wywołanie:

Przykład:

 

Rekurencyjne wywoływanie metod

Metoda może wywoływać się sama. Zachowanie takie to rekurencja.

Poniższej przykład obliczający silnię danej liczby używając do tego rekurencyjnego wywołania metody.

Przykład:

Przekazywanie parametrów do metod

 

Podczas wywoływania metody z parametrami najpierw te parametry należy przekazać do metody.

Poniżej trzy rodzaje parametrów, które można przekazać do metody:

  • Parametry typu wartościowego (value parameters) – to parametry które możemy skopiować wartość argumentu i przekazać  w formie parametru do wnętrza metody. W tym przypadku zmiany parametru dokonane wewnątrz funkcji nie wpływają na argument. Co to znaczy? to oznacza że do metody przekazaliśmy jedynie kopię tej wartości. i każda zmiana wykonywana na niej nie wpływa na zmianę parametru, który przekazaliśmy do metody;
  • Parametry typu referencyjnego (reference parameters) – to parametry które  są odniesieniem do parametru w postaci adresu w pamięci, które przekazujemy do wnętrza funkcji. Czyli w tym przypadku każda zmiana wprowadzona wewnątrz funkcji wpływa na wartość argumentu;
  • Parametry typu wyjściowego (output parameters) – to parametry które umożliwiają na zwrócenie więcej niż jednej wartości.

 

Parametry typu wartościowego

 

Jest to domyślny sposób przekazywania parametrów do metody. Kiedy metoda jest wywoływana, nowa komórka w pamięci jest tworzona dla każdego przekazywanego parametru.

Wartości aktualnych parametrów przekazywane są do wspomnianych wyżej komórek pamięci. W związku z tym, zmiany na parametrach wewnątrz metody nie mają wpływu na wartość argumentów przekazywanych do tej metody.

Omówmy działanie na poniższym przykładzie:

Parametry typu referencyjnego

 

Parametr referencyjny to nic innego jak odniesienie do adresu w pamięci wskazanego parametru. W momencie przekazywania parametru przez referencje, w odróżnieniu od typu wartościowego, nie jest tworzona nowa komórka w pamięci. Parametr referencyjny ma dokładnie takie samo odniesienie, czyli referencje do miejsca w pamięci co aktualnie używany parameter.

Parametr referencyjny definiujemy poprzez użycie słowa kluczowego ref.

Omówmy działanie na poniższym przykładzie (Użyjemy do tego znany nam już przykład z Parametrów wartościowych – lekko modyfikując).

Przykład:

Powyżej zaprezentowałęm przykłąd, który zmienia wartości wewnątrz metody, mające wpływ na zmienne przekazne, jako parametry typu referencyjnego tej metody.

 

Parametry typu wyjściowego

 

Instrukcja return powala na zwrócenie tylko jednej wartości z metody. Jednak, przy użyciu parametrów wyjściowych, możemy zwrócić większą liczbę takich wartości. Parametry wyjściowe podobne są do typów referencyjnych, z jedną ważną różnicą, otóż  parametry wyjściowe zwracają dane z metody, kiedy parametry referencyjne przekazują dane do metody.

Parametr wyjściowy jest definiowany przez użycie słowa kluczowego out.
Do omówienia parametrów wyjściowych ponownie użyjemy znanego nam przykładu:

Co warto zapamiętać?

Pamiętajmy że zmienna, którą chcemy zwrócić, wcale nie musi mieć przypisanej wartości. Parametry wyjściowe wykorzytujemy w kodzie, kiedy musimy zwrócić z metody parametry tak aby nie musiały mieć przypisanej początkowej wartości a na przykład wskarzemy podczas wykonywania naszego programu. Aby to łatwiej zrozumieć posłuże się naszym przykładem, po krótce modyfikując nasz kod.

Przykład:

 

 

Pytania? sugestie? piszcie komentujcie.

Oczywiście cały Przykłady dostępne na GitHubie.

 

Post Author: Csharpowe Zmagania

2 Replies to “METODY w C#”

    1. Hej,

      być może dlatego, że nie miałem ostatnio czasu aby zrobić update WP.

      już nie długo wrócę do bloga, i przeprowadzę modernizację. Mam nadzieje że strona wtedy będzie szybciej działac.
      Pozdrawiam.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.