En delegate är en typ som kan hålla en referens till en metod.
Det är som en "funktionpekare" från andra språk, men typ- och säkerhetskontrollerad i C#.
Med en delegate kan du:
using System;
public class Program
{
// 1. Deklarera en delegate
public delegate void MyDelegate(string text);
// 2. En metod som matchar delegate-signaturen
public static void PrintMessage(string message)
{
Console.WriteLine("Meddelande: " + message);
}
public static void Main()
{
// 3. Skapa en instans av delegaten
MyDelegate del = PrintMessage;
// 4. Anropa metoden via delegaten
del("Hej från en delegate!");
}
}
| Del | Förklaring |
|---|---|
public delegate void MyDelegate(string text) |
En delegate-typ som kan peka på metoder som tar en string och returnerar void |
PrintMessage |
En metod med samma signatur |
MyDelegate del = PrintMessage |
Skapar en delegate-instans som pekar på metoden |
del("Hej") |
Anropar metoden via delegaten |
👉 Skapa en ny delegate som heter MathOperation som tar två int och returnerar en int.
Skriv två metoder:
Add(int a, int b) – returnerar summanMultiply(int a, int b) – returnerar produktenTesta att tilldela båda metoderna till en MathOperation-delegate och anropa dem.
public delegate int MathOperation(int a, int b);
public static int Add(int a, int b) => a + b;
public static int Multiply(int a, int b) => a * b;
static void Main()
{
MathOperation op = Add;
Console.WriteLine(op(3, 4)); // 7
op = Multiply;
Console.WriteLine(op(3, 4)); // 12
}
Fundera på:
✔ Vad en delegate är
✔ Hur du skapar och använder en delegate
✔ Hur en delegate pekar på metoder med samma signatur
✔ Hur du kan växla dynamiskt mellan olika metoder