0Pricing
C# Academy · Lektion

Delegates und Events

Lernen Sie, wie Delegates und Events die Kommunikation zwischen Objekten in C# ermöglichen

Delegates und Events ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 5 von 6. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 6 Lektionen.

Delegates und Events

Delegates und Events

Willkommen zur nächsten Lektion! In dieser Lektion lernen Sie Delegates und Events in C# kennen, erfahren, wofür sie verwendet werden, und lernen, wie sie ereignisgesteuerte Programmierung ermöglichen. Legen wir los!

Delegates und Events — Illustration 1

Was ist ein Delegate?

Was ist ein Delegate?

Ein Delegate ist ein Typ, der eine Referenz auf eine Methode darstellt. Dadurch können Methoden als Parameter übergeben und dynamisch aufgerufen werden.

Wichtiger Punkt: Delegates sind für die Implementierung von Events und Callback-Funktionen in C# unverzichtbar.

Delegates definieren und verwenden

Delegates definieren und verwenden

Um ein Delegate zu definieren, verwenden Sie das Schlüsselwort delegate. Beispiel:

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-Delegates

Multicast-Delegates

Ein einzelnes Delegate kann auf mehrere Methoden verweisen, die alle der Reihe nach aufgerufen werden. Beispiel:

Tipp: Verwenden Sie Multicast-Delegates, wenn mehrere Aktionen ausgeführt werden müssen.

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
    }
}

Was ist ein Event?

Was ist ein Event?

Ein Event ist ein Mechanismus, mit dem eine Klasse andere Klassen oder Objekte benachrichtigen kann, wenn etwas von Interesse passiert. Events basieren auf Delegates.

Wichtiger Punkt: Events ermöglichen eine lose Kopplung zwischen Sendern und Abonnenten in der ereignisgesteuerten Programmierung.

Events definieren und verwenden

Events definieren und verwenden

Um ein Event zu definieren, verwenden Sie das Schlüsselwort event mit einem Delegate-Typ. Beispiel:

Wichtiger Punkt: Events ermöglichen den Aufbau reaktiver und ereignisgesteuerter Systeme.

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
    }
}

Von Events abmelden

Von Events abmelden

Abonnenten können sich mit dem Operator -=` von Events abmelden. Beispiel:

Tipp: Melden Sie sich immer von Events ab, um Speicherlecks zu vermeiden.

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
    }
}

Übungsaufgabe

Übungsaufgabe

Erstellen Sie ein Delegate CalculationDelegate für arithmetische Operationen sowie ein Event OnCalculate. Schreiben Sie ein Programm, das das Event auslöst und Berechnungen durchführt. Beispiel:

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
    }
}

Sehr gut!

Sehr gut!

Herzlichen Glückwunsch! Sie haben gelernt, wie Sie Delegates und Events verwenden, um dynamische und ereignisgesteuerte Programme zu erstellen. In der nächsten Lektion sehen wir uns die Arbeit mit Collections wie Listen, Dictionaries und Queues an. Programmieren wir weiter!

Delegates und Events — Illustration 10

Häufig gestellte Fragen

Ist die Lektion „Delegates und Events“ kostenlos?

Ja — der vollständige Text von „Delegates und Events“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 6 Lektionen.

Was lerne ich in „Delegates und Events“?

Lernen Sie, wie Delegates und Events die Kommunikation zwischen Objekten in C# ermöglichen Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 5 von 6.

Wie lange dauert die Lektion „Delegates und Events“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Einführung in Interfaces
  2. Abstrakte Klassen
  3. Statische Member und Methoden
  4. Enums und Structs erkunden
  5. Delegates und Events
  6. Arbeiten mit Collections: Listen, Wörterbüchern und Warteschlangen
← Zurück zu C# Academy