Methods
Præsenter som slidesLæringsmål
- Kan definere og kalde metoder i C#
- Kan bruge parametre og returværdier korrekt
- Kan forklare forskellen på void-metoder og metoder med returværdi
- Kan strukturere min kode bedre ved hjælp af metoder
- Kan anvende overloading, valgfrie parametre og rekursion
Metoder
En metode er en blok kode, der udfører en specifik opgave og kan kaldes fra andre dele af programmet. Metoder kan tage parametre som input og returnere en værdi — de gør koden genbrugelig, læsbar og nemmere at vedligeholde.
Metodens dele
En metode i C# består af:
- Adgangsmodifikator — synlighed, fx
publicellerprivate - Returtype — typen metoden returnerer (
voidhvis ingen returværdi) - Metodenavn — navnet du kalder metoden med
- Parametre — input til metoden (kan være tom)
- Metodekrop — koden der udfører opgaven
I moderne C# konsolprogrammer kan metoder være static og kaldes direkte — det bruger vi ofte i GF2:
static void SayHello(string name)
{
Console.WriteLine($"Hej {name}!");
}
<p>SayHello("GF2");
Top-level statements tillader metoder i samme fil som Program.cs.
Simpel metode uden parametre
En metode uden parametre udfører samme handling hver gang den kaldes:
Metoder med parametre
Parametre giver metoden input at arbejde med:
Flere parametre adskilles med komma. Typen skal matche det, metoden forventer.
Metoder med returværdier
Metoder kan returnere en værdi med return:
Korte metoder kan bruge expression body (=>):
void vs. metoder med returværdi
void — metoden returnerer ingenting, den udfører en handling:
Returværdi — metoden beregner og sender et resultat tilbage:
Brug void til sideeffekter (print, gem data). Brug returværdi, når metoden producerer et resultat, du skal bruge videre.
Overloading
Overloading betyder flere metoder med samme navn, men forskellige parametre. Compileren vælger den rigtige ud fra antal og type:
static void Print(int number)
{
Console.WriteLine("Nummer: " + number);
}
static void Print(string message)
{
Console.WriteLine("Besked: " + message);
}
Print(42);
Print("Hello, World!");
Samme idé med forskellige taltyper og antal parametre:
static int Add(int a, int b) => a + b;
static double Add(double a, double b) => a + b;
static int Add(int a, int b, int c) => a + b + c;
Console.WriteLine("Add(2, 3) = " + Add(2, 3));
Console.WriteLine("Add(2.5, 3.1) = " + Add(2.5, 3.1));
Console.WriteLine("Add(1, 2, 3) = " + Add(1, 2, 3));
Valgfrie parametre
Parametre kan have standardværdier — de er valgfrie ved kald:
Rekursive metoder
En metode kan kalde sig selv — det kaldes rekursion. Det bruges når et problem kan opdeles i mindre delproblemer:
Rekursion kræver altid en base case (n <= 1) — ellers kører metoden for evigt.
Metoder som strukturering
Metoder er dit vigtigste værktøj til at organisere kode. Opdel i logiske enheder i stedet for én lang Main:
Hver metode gør én ting — princippet kaldes Single Responsibility.
Instansmetoder vs. static
Static metoder kaldes direkte på klassen. Instansmetoder kræver et objekt (new):
Hvornår er metoder smarte? — især i UI
Metoder er afgørende i UI-udvikling (fx Blazor), fordi de strukturerer og genbruger kode:
Modularitet og genbrug
- Skriv logik én gang, kald den mange steder
- Ret fejl ét sted — ikke i ti kopier af samme kode
Læselighed
- Gode metodenavne (
ShowUserProfile,CalculateTotal) forklarer hvad koden gør uden at læse implementeringen
Det gælder konsolprogrammer og web-apps — metoder er grundlaget for vedligeholdelig kode.
Git-trin
- Branch:
main - Commit:
feat: metoder og strukturering
Opsummering
- Metoder organiserer og genbruger kode med navn, parametre og returtype
voidreturnerer ingenting; andre typer kræverreturn- Overloading — samme navn, forskellige parametre
- Valgfrie parametre — standardværdier giver fleksibilitet
- Rekursion — metoden kalder sig selv med en base case
- Metoder kan være static (på klassen) eller instansmetoder (på et objekt)
Test din viden
Spørgsmål 1
Hvad betyder void som returtype på en metode?
void betyder, at metoden udfører en handling (fx udskriver tekst) men sender intet resultat tilbage. Metoder med andre returtyper skal bruge return.
Spørgsmål 2
Hvad er overloading?
Overloading lader dig definere fx Add(int a, int b) og Add(double a, double b) — compileren vælger den rigtige ud fra antal og type af parametre.
Spørgsmål 3
Hvad gør et valgfrit parameter med standardværdi?
Med int times = 1 kan du kalde PrintMessage("Hej") uden andet argument — times bliver automatisk 1. Send 3 for at overskrive standardværdien.
Spørgsmål 4
Hvad er base case i en rekursiv metode?
Rekursion kræver altid en base case — ellers kalder metoden sig selv for evigt. I Factorial: if (n <= 1) return 1; stopper rekursionen.
Spørgsmål 5
Hvornår bør du bruge en metode med returværdi frem for void?
Brug returværdi, når metoden producerer data — fx IsPositive(int number) returnerer bool. Brug void, når den kun har en sideeffekt som print.
Spørgsmål 6
Hvad er forskellen på en static metode og en instansmetode?
static void SayHello(...) kaldes direkte: SayHello("Ada"). Instansmetoder som program.SayHello() kræver et objekt oprettet med new.
Spørgsmål 7
Hvad er Single Responsibility i forbindelse med metoder?
Opdel kode i metoder, der hver løser ét klart problem — fx ReadScore() og ShowResult(). Det gør det nemmere at finde fejl og genbruge logik.