1. Vad är en delegate i C#?
A) En typ som kan lagra strängar
B) En typ som refererar till en metod
C) En metod som är statisk
D) En klass för att skicka e-post
2. Vad händer när man anropar en multicast delegate med flera metoder kopplade till sig?
A) Endast den första metoden körs
B) Alla metoder körs i slumpmässig ordning
C) Alla metoder körs i den ordning de kopplades in
D) Det kastas ett undantag
3. Vilken syntax används för att prenumerera på ett event?
A) event += handler;
B) event = handler;
C) event(handler);
D) delegate += event;
4. Vad gör ?.Invoke() i samband med events?
A) Stoppar exekveringen
B) Garanterar att eventet bara körs en gång
C) Kontrollerar om det finns några lyssnare innan eventet triggas
D) Tar bort alla prenumeranter
5. Vad skriver följande kod ut?
public delegate void MyDelegate();
public class Program
{
public static void Hello() => Console.WriteLine("Hej");
public static void Bye() => Console.WriteLine("Hejdå");
static void Main()
{
MyDelegate del = Hello;
del += Bye;
del();
}
}
6. Vad är felet (om något) i den här koden?
public class Button
{
public event Action OnPressed;
public void Press()
{
OnPressed(); // <-- här
}
}
7. Vad returnerar den här metoden?
public static int Calculate(int a, int b, Func<int, int, int> op)
{
return op(a, b);
}
static void Main()
{
var result = Calculate(3, 4, (x, y) => x * y);
Console.WriteLine(result);
}
8. Förklara skillnaden mellan en delegate och ett event.
9. Varför används EventHandler<T> istället för att skapa egna delegate-typer?
10. Vad betyder det att en klass prenumererar på ett event?
1. Vad är en delegate i C#?
✅ B) En typ som refererar till en metod
2. Vad händer när man anropar en multicast delegate med flera metoder kopplade till sig?
✅ C) Alla metoder körs i den ordning de kopplades in
3. Vilken syntax används för att prenumerera på ett event?
✅ A) event += handler;
4. Vad gör ?.Invoke() i samband med events?
✅ C) Kontrollerar om det finns några lyssnare innan eventet triggas
5. Vad skriver följande kod ut?
Hej
Hejdå
Förklaring: Det är en multicast delegate där båda metoderna är kopplade.
6. Vad är felet (om något) i den här koden?
OnPressed(); // ❌ Fel: eventet kan vara null
✅ Rätt svar: Man måste kontrollera om OnPressed har några prenumeranter innan man anropar det:
OnPressed?.Invoke();
7. Vad returnerar den här metoden?
3 * 4 = ✅ **12**
8. Förklara skillnaden mellan en delegate och ett event.
✔ En delegate är en typ som kan referera till en eller flera metoder.
✔ Ett event är en säkerhetsmekanism kring en delegate – endast den klass där eventet är deklarerat kan trigga det, medan andra klasser kan prenumerera.
9. Varför används EventHandler<T> istället för att skapa egna delegate-typer?
✔ För att följa .NET-standard, vilket gör koden mer läsbar och kompatibel med verktyg, bibliotek och andra utvecklare.
✔ Den innehåller sender och en EventArgs-baserad dataklass vilket ger struktur.
10. Vad betyder det att en klass prenumererar på ett event?
✔ Det betyder att klassen lägger till en metod som ska köras när eventet triggas.
✔ Detta görs med +=, vilket kopplar metoden till eventkedjan.t