W języku C # funkcja to sposób pakowania kodu, który coś robi, a następnie zwraca wartość. W przeciwieństwie do C C ++ a niektóre inne języki same nie istnieją. Są częścią obiektowy podejście do programowania.
Program do zarządzania arkuszami kalkulacyjnymi może na przykład zawierać funkcję sum () jako część obiektu.
W języku C # funkcję można nazwać funkcją składową - jest ona członkiem klasy - ale terminologia ta pozostała po C ++. Zwykła nazwa to metoda.
Metoda instancji
Istnieją dwa rodzaje metod: metoda instancji i metoda statyczna. To wprowadzenie obejmuje metodę instancji.
Poniższy przykład definiuje prostą klasę i nazywa ją Test. Ten przykład jest prostym programem konsolowym, więc jest to dozwolone. Zwykle pierwszą klasą zdefiniowaną w pliku C # musi być klasa formularza.
Można mieć taką pustą klasę Test klasy {}, ale to nie jest przydatne. Chociaż wygląda na pusty, to - podobnie jak wszystkie klasy C # - dziedziczy po obiekcie, który go zawiera i zawiera domyślny konstruktor w programie głównym.
var t = nowy Test ();
Ten kod działa, ale nie zadziała, gdy zostanie uruchomiony, oprócz utworzenia wystąpienia t pustej klasy testowej. Poniższy kod dodaje funkcję, metodę, która generuje słowo „cześć”.
using System;
przestrzeń nazw funcex1
{
Test klasowy
{
public void SayHello ()
{
Konsola. WriteLine („Hello”);
}
}
Program zajęć
{
static void Main (string [] args)
{
var t = nowy Test ();
t. Powiedz cześć() ;
Konsola. Kluczem przeczytać() ;
}
}
}
Ten przykład kodu obejmuje Konsola. Kluczem przeczytać(), więc po uruchomieniu wyświetla okno konsoli i oczekuje na wpisanie klawisza, takiego jak Enter, Spacja lub Return (nie Shift, Alt lub Ctrl). Bez niego otworzy okno konsoli, wyświetli „Hello”, a następnie zamknie wszystko w mgnieniu oka.
Funkcja Powiedz cześć jest tak prostą funkcją, jak tylko możesz. Jest to funkcja publiczna, co oznacza, że funkcja jest widoczna spoza klasy.
Jeśli usuniesz słowo publiczny i spróbuj skompilować kod kończy się niepowodzeniem z błędem kompilacji „funcex1.test. SayHello () 'jest niedostępny ze względu na poziom ochrony. ”Jeśli dodasz słowo„ private ”w miejscu, gdzie słowo public było i ponownie skompilujesz, otrzymasz ten sam błąd kompilacji. Po prostu zmień go z powrotem na „publiczny”.
Słowo unieważnić w funkcji oznacza, że funkcja nie zwraca żadnych wartości.
Typowa charakterystyka definicji funkcji
- Poziom dostępu: publiczny, prywatny oraz niektóre inne
- Zwracana wartość>: void lub dowolny typ, taki jak int
- Nazwa metody: SayHello
- Dowolne parametry metody: na razie brak. Są one zdefiniowane w nawiasach kwadratowych () po nazwie metody
Kod definicji innej funkcji, MyAge (), to:
public int MyAge ()
{
zwrot 53;
}
Dodaj to zaraz po Powiedz cześć() Metoda w pierwszym przykładzie i dodaj te dwa wiersze wcześniej Konsola. Kluczem przeczytać().
var age = t. Mój wiek();
Konsola. WriteLine („David ma {0} lat”, wiek);
Uruchomienie programu wyświetla teraz to:
Witaj
David ma 53 lata,
The var age = t. Mój wiek(); wywołanie metody zwróciło wartość 53. To nie jest najbardziej przydatna funkcja. Bardziej użytecznym przykładem jest funkcja Sum arkusza kalkulacyjnego z tablicą ints, indeks początkowy i liczbę wartości do zsumowania.
To jest funkcja:
public float Sum (int [] wartości, int startindex, int endindex)
{
var ogółem = 0;
dla (var index = startindex; indeks <= endindex; indeks ++)
{
suma + = wartości [indeks];
}
zwrot ogółem;
}
Oto trzy przypadki użycia. Jest to kod, który należy dodać w Main () i wywołać w celu przetestowania funkcji Sum.
var var = new int [10] {1, 2, 3, 4, 5, 6, 7, 8, 9,10};
Konsola. WriteLine (t. Suma (wartości 0,2)); // Powinno być 6
Konsola. WriteLine (t. Suma (wartości 0,9)); // powinno mieć 55 lat
Konsola. WriteLine (t. Suma (wartości, 9,9)); // powinna wynosić 10, ponieważ 9. wartość to 10
The For pętla sumuje wartości z zakresu startindex do endindex, więc dla startindex = 0 i endindex = 2 jest to suma 1 + 2 + 3 = 6. Natomiast dla 9,9 dodaje tylko jedną wartość [9] = 10.
W ramach funkcji suma zmiennej lokalnej jest inicjowana na 0, a następnie dodawane są odpowiednie części wartości tablicy.