Læ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:

  1. Adgangsmodifikator — synlighed, fx public eller private
  2. Returtype — typen metoden returnerer (void hvis ingen returværdi)
  3. Metodenavn — navnet du kalder metoden med
  4. Parametre — input til metoden (kan være tom)
  5. 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
  • void returnerer ingenting; andre typer kræver return
  • 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?

Spørgsmål 2

Hvad er overloading?

Spørgsmål 3

Hvad gør et valgfrit parameter med standardværdi?

Spørgsmål 4

Hvad er base case i en rekursiv metode?

Spørgsmål 5

Hvornår bør du bruge en metode med returværdi frem for void?

Spørgsmål 6

Hvad er forskellen på en static metode og en instansmetode?

Spørgsmål 7

Hvad er Single Responsibility i forbindelse med metoder?