Delegater och händelser
Lär dig hur delegater och händelser möjliggör kommunikation mellan objekt i C#
Delegater och händelser är en gratis lektion i C# Academy på CoddyKit. Detta är lektion 5 av 6. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C# Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C# Academy innehåller totalt 6 lektioner.
Delegater och händelser
Välkommen till nästa lektion! I den här lektionen får ni lära er om delegater och händelser i C#, vad de används till och hur de möjliggör händelsestyrd programmering. Nu sätter vi igång!

Vad är en delegat?
En delegat är en typ som representerar en referens till en metod. Den gör det möjligt att skicka metoder som parametrar och anropa dem dynamiskt.
Viktig poäng: Delegater är avgörande för att implementera händelser och callback-funktioner i C#.
Definiera och använda delegater
Använd nyckelordet delegate för att definiera en delegat. Exempel:
using System;
class Program {
// Define a delegate
public delegate void MessageDelegate(string message);
static void DisplayMessage(string message) {
Console.WriteLine(message);
}
static void Main() {
// Create a delegate instance
MessageDelegate msg = DisplayMessage;
// Invoke the delegate
msg("Hello, Delegates!");
}
}
Multicast-delegater
En enda delegat kan referera till flera metoder, och alla metoder anropas i tur och ordning. Exempel:
Tips: Använd multicast-delegater i situationer där flera åtgärder behöver utföras.
using System;
class Program {
public delegate void MessageDelegate(string message);
static void ShowMessage(string message) {
Console.WriteLine("Message: " + message);
}
static void LogMessage(string message) {
Console.WriteLine("Log: " + message);
}
static void Main() {
MessageDelegate msg = ShowMessage;
msg += LogMessage; // Add another method
msg("Hello, Multicast Delegates!"); // Both methods are invoked
}
}
Vad är en händelse?
En händelse är en mekanism som gör det möjligt för en klass att meddela andra klasser eller objekt när något av intresse inträffar. Händelser bygger på delegater.
Viktig poäng: Händelser möjliggör lös koppling mellan publicerare och prenumeranter i händelsestyrd programmering.
Definiera och använda händelser
Använd nyckelordet event tillsammans med en delegattyp för att definiera en händelse. Exempel:
Viktig poäng: Händelser gör det möjligt att bygga reaktiva och händelsestyrda system.
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify; // Define an event
public void RaiseEvent(string message) {
Notify?.Invoke(message); // Invoke the event
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe to the event
pub.RaiseEvent("Hello, Events!"); // Raise the event
}
}
Avregistrera sig från händelser
Prenumeranter kan avregistrera sig från händelser med operatorn -=`` operator. Exempel:
Tips: Avregistrera er alltid från händelser för att undvika minnesläckor.
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify;
public void RaiseEvent(string message) {
Notify?.Invoke(message);
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe
pub.RaiseEvent("First Message");
pub.Notify -= sub.OnNotify; // Unsubscribe
pub.RaiseEvent("Second Message"); // No output, as subscriber is removed
}
}
Övningsuppgift
Skapa en delegat CalculationDelegate för aritmetiska operationer samt en händelse OnCalculate. Skriv ett program som utlöser händelsen och utför beräkningar. Exempel:
using System;
class Calculator {
public delegate void CalculationDelegate(double result);
public event CalculationDelegate OnCalculate;
public void Add(double a, double b) {
double result = a + b;
OnCalculate?.Invoke(result);
}
}
class Program {
static void Main() {
Calculator calc = new Calculator();
// Subscribe to the event
calc.OnCalculate += result => Console.WriteLine("Result: " + result);
calc.Add(5, 3); // Outputs: Result: 8
}
}
Bra jobbat!
Grattis! Ni har lärt er hur delegater och händelser kan användas för att bygga dynamiska och händelsestyrda program. I nästa lektion utforskar vi hur ni arbetar med samlingar som listor, dictionaries och köer. Nu fortsätter vi att koda!

Lär dig C# med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 93
- Lektioner
- 346
Vanliga frågor
Är lektionen ”Delegater och händelser” gratis?
Ja – hela texten till ”Delegater och händelser” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C# Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C# Academy innehåller totalt 6 lektioner.
Vad lär jag mig i ”Delegater och händelser”?
Lär dig hur delegater och händelser möjliggör kommunikation mellan objekt i C# Ni övar på C# Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig C# Academy?
Du behöver inga förkunskaper. Utbildningen i C# Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 5 av 6.
Hur lång tid tar lektionen ”Delegater och händelser”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här C# Academy-lektionen?
Ja. Varje C# Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Introduktion till gränssnitt
- Abstrakta klasser
- Statiska medlemmar och metoder
- Utforska enum-typer och strukturer
- Delegater och händelser
- Arbeta med samlingar: listor, lexikon och köer