I C # er en funksjon en måte å pakke kode på som gjør noe og deretter returnerer verdien. I motsetning til i C, C ++ og noen andre språk, eksisterer ikke funksjoner av seg selv. De er en del av et objekt orientert tilnærming til programmering.
Et program for å administrere regneark kan for eksempel inkludere en sum () -funksjon som en del av et objekt.
I C # kan en funksjon kalles en medlemsfunksjon - den er medlem av en klasse - men den terminologien er til overs fra C ++. Det vanlige navnet på det er en metode.
Forekomstmetoden
Det er to typer metoder: instansmetode og statisk metode. Denne introduksjonen dekker forekomstmetoden.
Eksemplet nedenfor definerer en enkel klasse og kaller den Test. Dette eksemplet er et enkelt konsollprogram, så dette er tillatt. Vanligvis må den første klassen som er definert i C # -filen, være formklassen.
Det er mulig å ha en tom klasse som denne klassetest {}, men det nytter ikke. Selv om det ser tomt ut, arver den - som alle C # -klasser - fra objektet som inneholder det og inkluderer en standard konstruktør i hovedprogrammet.
var t = ny test ();
Denne koden fungerer, men den vil ikke gjøre noe når den kjøres, bortsett fra å opprette en instans t av den tomme testklassen. Koden nedenfor legger til en funksjon, en metode som sender ut ordet "Hei."
bruker System;
navneområde funcex1
{
klasse Test
{
offentlig tomrom SayHello ()
{
Console. WritLine ("Hei");
}
}
klasse Program
{
statisk tomrom Main (streng [] args)
{
var t = ny test ();
t. Si hei() ;
Console. ReadKey ();
}
}
}
Dette kodeeksemplet inkluderer Console. ReadKey (), så når det kjører, viser det konsollvinduet og venter på en tastoppføring som Enter, Space eller Return (ikke skift-, Alt- eller Ctrl-tastene). Uten det ville det åpnet konsollvinduet, gitt ut "Hallo" og deretter lukket alt på et øyeblikk.
Funksjonen Si hei er omtrent så enkel funksjon som du kan ha. Det er en offentlig funksjon, som betyr at funksjonen er synlig utenfor klassen.
Hvis du fjerner ordet offentlig og prøv å kompilere koden mislykkes med en samlefeil "funcex1.test. SayHello () 'er utilgjengelig på grunn av dets beskyttelsesnivå. "Hvis du legger til ordet" privat "der ordet public var og rekompilerer, får du den samme kompilasjonsfeilen. Bare endre det tilbake til "offentlig".
Ordet tomrom i funksjonen betyr at funksjonen ikke returnerer noen verdier.
Typiske funksjonsdefinisjonsegenskaper
- Tilgangsnivå: offentlig, privat pluss noen andre
- Returner verdi>: ugyldig eller hvilken som helst type som int
- Metode Navn: SayHello
- Eventuelle metodeparametere: ingen foreløpig. Disse er definert i parentesene () etter metodenavnet
Koden for definisjonen av en annen funksjon, MyAge (), er:
offentlig int MyAge ()
{
retur 53;
}
Legg til det rett etter Si hei() metoden i det første eksemplet og legg til disse to linjene før Console. ReadKey ().
var alder = t. Min alder();
Console. WritLine ("David er {0} år gammel", alder);
Å kjøre programmet gir nå dette ut:
Hallo
David er 53 år gammel,
De var alder = t. Min alder(); samtale til metoden returnerte verdien 53. Det er ikke den mest nyttige funksjonen. Et mer nyttig eksempel er regnearket Sum-funksjonen med en rekke ints, startindeksen og antall verdier som skal summeres.
Dette er funksjonen:
public float Sum (int [] verdier, int startindex, int endindex)
{
var totalt = 0;
for (var indeks = startindex; index <= endindex; index ++)
{
totalt + = verdier [indeks];
}
retur totalt;
}
Her er tre brukssaker. Dette er koden du vil legge til i Main () og ringe for å teste Sum-funksjonen.
var verdier = nytt int [10] {1, 2, 3, 4, 5, 6, 7, 8, 9,10};
Console. WritLine (t. Sum (verdier, 0,2)); // Bør være 6
Console. WritLine (t. Sum (verdier, 0,9)); // skal være 55
Console. WritLine (t. Sum (verdier, 9,9)); // skal være 10 som 9. verdi er 10
For Løkke legger opp verdiene i området startindex til endindex, så for startindex = 0 og endindex = 2, er dette summen av 1 + 2 + 3 = 6. Mens for 9,9, legger det bare til verdiene [9] = 10.
Innenfor funksjonen initialiseres den lokale variabelen totalt til 0 og har deretter de relevante delene av matriseverdiene lagt til.