TOC

This article has been localized into Polish by the community.

Podstawy:

Funkcje

Funkcja pozwala enkapsulować (wygooglujcie) kawałek kodu i wywoływać go z innych części kodu. Niedługo możesz napotkać sytuację, gdy będziesz musiał powtórzyć część kodu z wielu miejsc - to jest właśnie funkcja funkcji :). W C# deklarujemy je właśnie w taki sposób:

<visibility> <return type> <name>(<parameters>)
{
<function code>
}

Aby wywołać funkcję, po prostu wpisz jej nazwę, otwarty nawias, następnie parametry jeżeli jakiekolwiek są i zamknij nawias:

DoStuff();

Przykład funkcji DoStuff():

public void DoStuff()
{
    Console.WriteLine("I'm doing something...");
}

Pierwsza część - public (publiczna) to widoczność i jest opcjonalna. Jeżeli nie zdefiniujesz widoczności, funkcja będzie domyślnie prywatna (private), ale więcej o tym później. Następny jest typ do zwrócenia. Może to być dowolny poprawny typ w C #, albo jak wcześniej mówiliśmy - void, które nic nie zwraca. Jak widzicie ta funkcja nie zawiera żadnych parametrów pomiędzy (), więc można się trochę nudzić... Lepiej spójrzmy na to:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    return result;
}

Zmieniliśmy prawie wszystko - teraz, funkcja zwraca liczbę całkowitą (int), jest wywoływana z dwoma parametrami (oba także są liczbami) i zamiast wyświetlać coś, robi za nas obliczenia i zwraca wynik. To oznacza, że możemy dodać dwie liczby z wielu miejsc w kodzie, zwyczajnie wywołując tę funkcję, zamiast przepisać kod do kalkulacji po raz kolejny. Chociaż nie oszczędzamy tyle czasu i wysiłku w tym małym przykładzie, lepiej uwierz, że nauczysz się kochać funkcje, tym bardziej, że korzystasz z C#. Funkcja jest wywoływana następująco:

int result = AddNumbers(10, 5);
Console.WriteLine(result);

Jak wspomniano, funkcja ta zwraca coś, i dobrze, bo powiedzieliśmy C#, że powinna. Kiedy deklarujemy cokolwiek innego niż void jako wartość zwracaną, zmuszamy program do zwrócenia czegokolwiek. Możesz spróbować usunąć linię z return z przykładu poniżej i zobaczyć co pokaże kompilator:

'AddNumbers(int, int)': nie wszystkie ścieżki kodu zwracają wartość

Kompilator przypomina nam, że mamy funkcję, która niczego nie zwraca, chociaż jej obiecaliśmy. Ale i kompilator jest dosyć mądry. Zamiast usuwać linię, spróbuj czegoś takiego:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    if(result > 10)
    {
return result;
    }
}

Zapewne zobaczysz ten sam błąd - ale dlaczego? To ponieważ program nie ma gwarancji, że nasz warunek if zostanie spełniony i linia z return zostanie wykonana. Możesz rozwiązać problem wrzucając kolejne return na końcu funkcji.

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    if(result > 10)
    {
return result;
    }
    return 0;
}

To rozwiąże problem, który sami sobie stworzyliśmy. Pokazuje to także, że możemy mieć więcej niż jedną deklarację return. Jak tylko program dotrze do return, funkcja zostaje porzucona i nie wykonywany jest więcej żaden kod. W tym wypadku, oznacza to, że jak tylko zmienna result jest większa od 10, to zmienna result 0; nigdy nie zostanie wywołana.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!