CodeGym /Kursy /C# SELF /Wprowadzenie do funkcji (metod) w C#

Wprowadzenie do funkcji (metod) w C#

C# SELF
Poziom 8 , Lekcja 2
Dostępny

1. Funkcje/Metody w C#

Już nauczyłeś się sporej ilości komend w C#, więc możesz pisać całkiem złożone programy. 10, 20, 30 linii kodu w programie — to przecież nie taki wielki program, prawda?

Ale program mający 100+ linii — to już spory kawałek, i ogarnąć taki kod jest dość trudno. Da się jakoś uprościć pisanie i czytanie programów z dużą ilością kodu?

Tak, i tu właśnie pomagają nam metody (funkcje).

Czym właściwie jest metoda? W dużym uproszczeniu, metoda to grupa komend, która ma unikalną nazwę. Innymi słowy, po prostu grupujemy kilka komend razem i nadajemy im unikalną nazwę. I gotowe — mamy metodę.

Załóżmy, że masz kod do rysowania kota:

Console.WriteLine("  |\\__/,|   (`\\");
Console.WriteLine("  |o_o  |__ _) )");
Console.WriteLine("  (____/   (_/ ");
Kod do rysowania kota

Oto co on wypisuje:

  |\__/,|   (`\
  |o_o  |__ _) )
  (____/   (_/

Możesz po prostu przenieść to do osobnej metody i rysować tyle kotów, ile chcesz:

void WriteCat()
{
    Console.WriteLine("  |\\__/,|   (`\\");
    Console.WriteLine("  |o_o  |__ _) )");
    Console.WriteLine("  (____/   (_/ ");    
}

//rysujemy trzy koty
WriteCat();
WriteCat();
WriteCat();
Użycie metody do wielokrotnego wypisania kota

Gdy program jest uruchomiony, za każdym razem gdy wywołasz WriteCat(), wykona wszystkie komendy wewnątrz metody WriteCat(). Po prostu stworzyliśmy nową komendę (metodę), łącząc kilka komend w jedną grupę.

Po co są funkcje:

  • Dzielą program na części, z których każda robi swoją robotę.
  • Ułatwiają ponowne użycie: raz napisane, używasz ile chcesz razy.
  • Zmniejszają szansę na bugi: błąd w funkcji poprawiasz w jednym miejscu.
  • Dają kodowi "nazwy" dla złożonych działań — czytelność od razu rośnie.

Terminologia: funkcja, metoda, procedura

W C# terminy funkcja i metoda zwykle znaczą to samo, ale są drobne niuanse.

  • Metoda — funkcja należąca do klasy lub obiektu (w C# prawie wszystko to metody).
  • Procedura — funkcja, która nic nie zwraca (void-metody).
  • Funkcja — w szerokim sensie każda nazwana część programu, którą można wywołać.

Oficjalnie w C# wszystko to nazywa się metodami, ale jeśli gdzieś dalej trafisz na "funkcję" — nie panikuj!

2. Składnia deklaracji metody: rozkład na czynniki pierwsze

Rozłóżmy na czynniki prostą funkcję, klasyczne "Hello, World!", tylko wypiszemy to przez osobną metodę:

using System;

class Program
{
    static void Main()
    {
        PrintHello();
    }

    static void PrintHello()	// wypisujemy tekst Hello, World!
    {
        Console.WriteLine("Hello, World!");
    }
}
Przykład deklaracji i wywołania metody

Rozkład składni:

Część Przykład Opis
Modyfikator
static
Wskazuje, że metoda należy do klasy (więcej o tym później)
Typ zwracanej wartości
void
Wskazuje, że metoda nic nie zwraca
Nazwa metody
PrintHello
Nazwa metody, przez którą ją wywołujesz
Parametry
()
Argumenty (puste — brak argumentów)
Ciało metody
{ ... }
Kod wykonywany przy wywołaniu metody

Analogicznie:
Metodę możesz porównać do automatu z kawą: wrzucasz kasę (argumenty), wciskasz guzik (wywołujesz metodę), automat parzy kawę (ciało metody), i daje ci wynik (zwracana wartość) — albo nie daje, jeśli to void-metoda!

3. Jak wywoływać metody

Wywołanie metody — to po prostu jej nazwa i nawiasy i tyle:

PrintHello(); // Metoda bez parametrów

int sum = Add(2, 3); // Metoda z parametrami i wynikiem

Ważne: metodę możesz wywołać tylko po jej deklaracji (albo jeśli jest "wyżej" w kodzie, albo w tej samej klasie).

4. Metody z parametrami

Do metody możesz przekazywać parametry. To sprawia, że metoda jest elastyczna i możesz ją dostosować do różnych sytuacji. W praktyce parametry to zmienne metody, którym przypisujesz wartości w momencie wywołania. Parametry trzeba podać podczas tworzenia metody.

static void Greet(string name)
{
    Console.WriteLine($"Cześć, {name}!");
}

// Użycie:
Greet("Alicja");
Greet("Bob");
Metoda z parametrem

Parametry — to zmienne, których wartości przekazujesz metodzie przy wywołaniu.

Część Przykład Opis
Typ parametru
string
Typ przyjmowanej wartości
Nazwa parametru
name
Nazwa do użycia w metodzie

Wywołania:
Greet("Alicja");name dostaje wartość "Alicja".

Kilka parametrów

Możesz zadeklarować kilka parametrów, oddzielając je przecinkiem:

static void PrintSum(int a, int b)
{
    Console.WriteLine($"Suma: {a + b}");
}

// Użycie:
PrintSum(5, 7); // Suma: 12
Metoda z kilkoma parametrami

5. Parametry-wartości i parametry-referencje

Parametry funkcji to zwykłe zmienne i obowiązują dla nich te same zasady, co dla innych zmiennych.

Pamiętaj więc: gdy przekazujesz do metody tablicę, przekazujesz referencję do tablicy, czyli metoda może zmienić zawartość tej tablicy. Dla prostych typów (int, double), przekazywana jest wartość.

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Zmienia oryginalną tablicę!
}

// Użycie:
int[] a = {1, 2, 3, 4, 5};
ZeroFirstGrade(a);
Console.WriteLine(a[0]);	//wypisze 0
Przekazanie tablicy przez referencję — metoda zmienia oryginalne dane

W praktyce dzieje się tu coś takiego:

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Zmienia oryginalną tablicę!
}

// Użycie:
int[] a = {1, 2, 3, 4, 5};

//ZeroFirstGrade(a);
int[] grades = a;
grades[0] = 0;

Console.WriteLine(a[0]);	//wypisze 0
Analogia przekazania tablicy przez referencję
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION