This article has been localized into Polish by the community.
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 deprecated!
This article has been re-organized and updated to better match the rest of the tutorial.
We suggest that you read this article instead: Methods (functions)