C# Academy · Lektion

Generics i C#

Lær, hvordan generics muliggør typesikker og genanvendelig kode

Lektion 1 af 510 trin

Generics i C# er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 1 af 5. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 5 lektioner i alt.

Introduktion til generiske typer

Generiske typer i C#

Velkommen til den første lektion i "Avancerede C#-funktioner"! I denne lektion lærer du om generiske typer, en effektiv funktion i C#, der giver dig mulighed for at oprette fleksibel og genanvendelig kode. Lad os komme i gang!

Generics i C# — illustration 1

Hvad er generiske typer?

Generiske typer er en funktion i C#, der giver dig mulighed for at definere klasser, metoder og datastrukturer med en pladsholder for den datatype, de gemmer eller bruger. Generiske typer sikrer typesikkerhed og genbrug af kode.

Eksempel: En generisk liste (List<T>) kan gemme elementer af enhver type og samtidig sikre typesikkerhed.

Oprettelse af generiske klasser

Du kan definere en generisk klasse ved hjælp af syntaksen <T>, hvor T repræsenterer en typeparameter. Eksempel:

Vigtigt: Brug generiske typer til at oprette klasser, der fungerer med alle datatyper, samtidig med at typesikkerheden bevares.

using System;

class GenericBox<T> {
    public T Value { get; set; }

    public void Display() {
        Console.WriteLine("Value: " + Value);
    }
}

class Program {
    static void Main() {
        GenericBox<int> intBox = new GenericBox<int> { Value = 42 };
        intBox.Display(); // Outputs: Value: 42

        GenericBox<string> stringBox = new GenericBox<string> { Value = "Hello, Generics!" };
        stringBox.Display(); // Outputs: Value: Hello, Generics!
    }
}

Oprettelse af generiske metoder

Du kan definere en generisk metode i en klasse. Eksempel:

Tip: Brug generiske metoder til operationer, der gælder for flere datatyper.

using System;

class Program {
    static void Main() {
        PrintValue(42);
        PrintValue("Generics are powerful!");
    }

    static void PrintValue<T>(T value) {
        Console.WriteLine("Value: " + value);
    }
}

Begrænsninger for generiske typer

Begrænsninger indskrænker, hvilke typer der kan bruges som typeparametre. Eksempel:

  • where T : struct - T skal være en værditype.
  • where T : class - T skal være en referencetype.
  • where T : new() - T skal have en parameterløs konstruktør.

Eksempel:

Vigtigt: Begrænsninger gør generiske typer mere fleksible og anvendelige i bestemte situationer.

using System;

class Program {
    static void Main() {
        DisplayDefault<int>();
        DisplayDefault<string>();
    }

    static void DisplayDefault<T>() where T : new() {
        T instance = new T();
        Console.WriteLine("Created instance of: " + typeof(T));
    }
}

Generiske samlinger

C# indeholder flere indbyggede generiske samlinger:

  • List<T>: Gemmer en samling elementer i et dynamisk array.
  • Dictionary<TKey, TValue>: Gemmer nøgle-værdi-par, så opslag kan udføres hurtigt.
  • Queue<T>: Implementerer en først ind, først ud-struktur (FIFO).

Eksempel: Brug af en generisk liste:

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
        names.Add("Diana");

        foreach (string name in names) {
            Console.WriteLine(name);
        }
    }
}

Øvelsesopgave

Opret en generisk klasse Pair<TKey, TValue>, der gemmer et nøgle-værdi-par, samt en generisk metode Swap(), der bytter om på nøglen og værdien. Eksempel:

using System;

class Pair<TKey, TValue> {
    public TKey Key { get; set; }
    public TValue Value { get; set; }

    public void Swap() {
        (Key, Value) = ((TKey)(object)Value, (TValue)(object)Key);
    }

    public void Display() {
        Console.WriteLine($"Key: {Key}, Value: {Value}");
    }
}

class Program {
    static void Main() {
        Pair<string, int> pair = new Pair<string, int> { Key = "Age", Value = 30 };
        pair.Display();
        pair.Swap();
        pair.Display();
    }
}

Bedste praksis for brug af generiske typer

Her er nogle anbefalinger:

  • Brug generiske typer til at oprette genanvendelige og typesikre klasser og metoder.
  • Anvend begrænsninger, når der er behov for bestemte typekrav.
  • Foretræk generiske samlinger frem for ikke-generiske samlinger af hensyn til ydeevne og sikkerhed.

Tip: Brug meningsfulde navne til typeparametre, f.eks. T for type eller TKey og TValue for nøgle-værdi-par.

Godt klaret!

Tillykke! Du har lært at bruge generiske typer til at skabe genanvendelig og fleksibel kode i C#. I næste lektion udforsker vi asynkron programmering med async og await. Lad os fortsætte med at kode!

Generics i C# — illustration 10
Gratis at komme i gang

Lær C# med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
93
Lektioner
346

Ofte stillede spørgsmål

Er lektionen “Generics i C#” gratis?

Ja — hele teksten til “Generics i C#” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 5 lektioner i alt.

Hvad lærer jeg i “Generics i C#”?

Lær, hvordan generics muliggør typesikker og genanvendelig kode Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C# Academy?

Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 5.

Hvor lang tid tager lektionen “Generics i C#”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C# Academy-lektion?

Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Generics i C#
  2. Async og await: Arbejde med asynkron kode
  3. Forståelse af tråde og opgaver
  4. Udforsk delegates og lambdaer
  5. Forståelse af reflection i C#
← Tilbage til C# Academy