V C # je funkcia spôsob balenia kódu, ktorý niečo robí a potom vracia hodnotu. Na rozdiel od C, C ++ a niektoré ďalšie jazyky, funkcie samy neexistujú. Sú súčasťou objektovo orientovaný prístup k programovaniu.
Program na správu tabuliek môže napríklad obsahovať funkciu sum () ako súčasť objektu.
V C # sa funkcia môže nazývať členská funkcia - je to člen triedy - ale táto terminológia zostáva z C ++. Bežný názov je metóda.
Metóda inštancie
Existujú dva typy metód: metóda inštancie a metóda statická. Tento úvod sa týka inštancie.
Nasledujúci príklad definuje jednoduchú triedu a volá ju skúška. Tento príklad je jednoduchý program konzoly, takže je to povolené. Prvá trieda definovaná v súbore C # musí byť zvyčajne trieda formulárov.
Je možné mať takúto prázdnu triedu test triedy {}, ale nie je to užitočné. Aj keď to vyzerá prázdne, rovnako ako všetky triedy C # dedí od objektu, ktorý ho obsahuje, a obsahuje predvolené staviteľ v hlavnom programe.
var t = nový test ();
Tento kód funguje, ale pri spustení nič neurobí, okrem vytvorenia inštancie
T prázdnej testovacej triedy. Nasledujúci kód pridáva funkciu, metódu, ktorá vydá slovo „Ahoj“.pomocou systému;
namespace funcex1
{
test triedy
{
verejné neplatné SayHello ()
{
Konzoly. WriteLine („Ahoj“);
}
}
program triedy
{
static void Main (string [] args)
{
var t = nový test ();
t. Povedz ahoj() ;
Konzoly. ReadKey ();
}
}
}
Tento príklad kódu obsahuje Konzoly. ReadKey (), takže keď sa spustí, zobrazí sa okno konzoly a čaká sa na zadanie kľúča, ako napríklad Enter, medzera alebo návrat (nie klávesy Shift, Alt alebo Ctrl). Bez neho by sa otvorilo okno konzoly, výstup „Ahoj“ a potom všetko zatvorilo v okamihu oka.
Funkcia Povedz ahoj je asi tak jednoduchá funkcia, ako môžete mať. Je to verejná funkcia, čo znamená, že táto funkcia je viditeľná zvonku triedy.
Ak slovo odstránite verejnosť a skúste to kompilácie kód zlyhá s chybou kompilácie "funcex1.test. SayHello () 'je neprístupný z dôvodu jeho úrovne ochrany. „Ak pridáte slovo„ private “, kde bolo slovo public a recompile, dostanete rovnakú chybu pri kompilácii. Stačí ho zmeniť späť na „verejné“.
Slovo prázdno vo funkcii znamená, že funkcia nevracia žiadne hodnoty.
Charakteristické vlastnosti Definícia funkcie
- Úroveň prístupu: verejná, súkromná plus niektorí iní
- Návratová hodnota>: void alebo akýkoľvek typ, napríklad int
- Názov metódy: SayHello
- Akékoľvek parametre metódy: zatiaľ žiadne. Sú definované v zátvorkách () za názvom metódy
Kód pre definíciu inej funkcie, MyAge (), je:
public int MyAge ()
{
návrat 53;
}
Pridajte to hneď za Povedz ahoj() V prvom príklade pridajte tieto dva riadky Konzoly. ReadKey ().
var vek = t. Môj vek();
Konzoly. WriteLine ("David má {0} rokov", vek);
Spustenie programu má teraz tieto výstupy:
Ahoj
David má 53 rokov,
var vek = t. Môj vek(); volanie metódy vrátilo hodnotu 53. Nie je to najužitočnejšia funkcia. Užitočnejším príkladom je funkcia tabuľky so súhrnom ints, počiatočný index a počet hodnotených súčtov.
Toto je funkcia:
public float Sum (int [] hodnoty, int startindex, int endindex)
{
var total = 0;
pre (var index = startindex; index <= endIndex; index ++)
{
celkom + = hodnoty [index];
}
návratnosť celkom;
}
Tu sú tri prípady použitia. Toto je kód, ktorý sa pridá do Main () a zavolá na testovanie funkcie súčtu.
var hodnoty = nová hodnota int [10] {1, 2, 3, 4, 5, 6, 7, 8, 9,10};
Konzoly. WriteLine (t. Súčet (hodnoty, 0,2)); // Malo by byť 6
Konzoly. WriteLine (t. Súčet (hodnoty, 0,9)); // by malo byť 55
Konzoly. WriteLine (t. Súčet (hodnoty, 9,9)); // by malo byť 10, pretože 9. hodnota je 10
Pre slučka sčítava hodnoty v rozsahu startindex do endindex, takže pre startindex = 0 a endindex = 2 je to súčet 1 + 2 + 3 = 6. Zatiaľ čo v prípade 9,9 sa iba pridávajú jedna hodnota [9] = 10.
V rámci funkcie sa inicializuje celková lokálna premenná na 0 a potom sa pridajú príslušné časti hodnôt polí.