No sidenav ...

Recent updates

then again, fuck that.

You are here > Home > Documents > > >

Methods / Metoder

Hva er en metode? Kort forklart så er det en bit kode vi kan bruke flere steder. Det kan være så enkelt som dette:

static void Main(string[] args) { Demo(); Console.Read(); } static void Demo() { Console.WriteLine("Hello!"); }

Når vi starter programmet, så vil metoden "Main" startes. Det vil si at kodene mellom Main's { og } vil bli utført. Første linje i Main er "Demo()", som er vår testmetode. Derfor vil programmet hoppe til metoden "Demo" og utføre koden den finner der. Programmet vil derfor skrive "Hello!" til konsollen når vi starter programmet. Når det ikke er mer kode i Demo, så hopper programmet tilbake til der vi kalte opp metoden fra (Main) og fortsetter fra neste linje. Her ber vi programmet om å vente på et tastetrykk før det fortsetter. Nå er det ikke mer kode i Main heller, så programmet avsluttes.

Kode vi bruker ofte kan plasseres i en metode, slik at vi slipper å skrive koden flere ganger.

Metoder kjører isolert fra resten av koden. Dersom man har en variabel i metoden Main som heter var, så kan ikke metoden vår (Demo) se variabelen. Dersom vi oppretter variabelen var i Demo, så er det en helt annen variabel enn den som heter var i Main. Det fungerer også slik den andre veien - dersom vi oppretter variabelen envar i Demo, så forsvinner den av seg selv når Demo slutter. Dersom vi ønsker å sende verdier/variabler til og fra en metode, så må vi bruke argumenter og return. La oss se på argumenter først.

static void Main(string[] args) { Demo(1); Demo(2); Demo(3); Console.Read(); } static void Demo(int demovar) { Console.WriteLine("Argumentet som ble " + "gitt til Demo er " + demovar + "."); }

Nå har vi modifisert metode-deklarasjonen til Demo slik at den tar imot et argument. Et argument er en variabel som vi gir til metoden idèt vi kaller den opp. Inni metoden fungerer argumentet som en vanlig variabel - vi kan både lese fra og skrive til den. Når vi kjører programmet over, så vil følgende skrives til konsollen:

Argumentet som ble gitt til Demo er 1. Argumentet som ble gitt til Demo er 2. Argumentet som ble gitt til Demo er 3.

Som sagt kan en metode brukes for å gruppere kode vi bruker ofte, men de kan også brukes for å gjøre utregninger og større oppgaver. Da er det ofte viktig å kunne hente verdier ut av en metode:

static void Main(string[] args) { double antall = 28; double total = 64; double andel = Prosent(antall, total); Console.WriteLine(antall + " enhter av totalt " + total + " tilsvarer " + andel + " prosent."); Console.Read(); } static double Prosent(double ant, double tot) { //Returnerer prosent-andel avrundet til ett desimal double andel = Math.Round((100/tot) * ant, 1); return andel; }

Her har jeg brukt return for første gang. Return gjør at metoden gir tilbake en verdi når koden har blitt utført. Denne verdien kan vi enten lagre i en variabel, eller bruke rett i koden - i eksempelet lagret jeg verdien i variabelen andel. Legg merke til metode-deklarasjonen for metoden Prosent; i tidligere eksempler brukte jeg "void", noe som tilsier at metoden ikke returnerer noen verdi. I metode-deklarasjonen bestemmer vi hvilken type verdi som skal returneres, akkurat som når vi oppretter en variabel. Denne metoden vil altså returnere en double-verdi.

Metoder kan nesten sees på som enveis-variabler.

Når koden utføres, så vil tre variabler av typen double opprettes. antall blir gitt verdien 24, total blir 60, og andel angis ved hjelp av metoden Prosent. Denne metoden trenger to argumenter for å kjøre, nemlig double-verdiene ant og tot (som vi ser i metode-deklarasjonen). Legg merke til at variablene vi gir til metoden heter antall og total, og ikke ant og tot. Navnet på variablene vi gir til metoden har ingenting å si, det er metode-deklarasjonen sine navn som teller. Siden vi har kalt opp en metode på linje 3 i Main, så vil programmet hoppe til Prosent-metoden vår. Her regner først programmet ut hva 100/tot er, og det ganges til slutt med ant. Dette gir oss prosent-andelen. Men dersom ant og tot ikke går opp, så sitter vi igjen med et desimaltall. Flere hundre desimaler blir bare overflødig i vårt eksempel, så vi bruker Math.Round for å avrunde til ett desimal.

Round er en metode i Math-klassen (jeg skal komme tilbake til klasser senere) som tar imot to argumenter. Det første er et desimaltall (double), og det andre er hvor mange desimaler vi ønsker. Round returnerer også double, slik at vi kan lagre verdien i en variabel (eller bruke den rett i koden). Verdien som Math.Round gir oss lagrer vi midlertidig i variabelen andel. Nå går programmet videre til siste linje i metoden, som er "return andel". Dette får metoden til å returnere verdien som er i variabelen andel.

Nå går programmet tilbake til Main, og fortsetter på neste linje. Her skrives en linje til konsollen, nemlig "28 enheter av totalt 64 tilsvarer 43.7 prosent.". Programmet venter så på et tastetrykk før det avsluttes.