DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Kerstin Lahr Artikel Drucken
        
Der Delegate - ein typsicherer Funktionszeiger

Delegates sind ein sehr wichtiges Konzept im .NET-Framework, zu dem es in VB 6.0 kein direktes Pendant gibt.
Ein Delegate ist vergleichbar mit einem objekt-orientierten Funktionszeiger, nur dass er typsicher ist, da er außer der Funktionsadresse auch das Wissen über die Datentypen der aufzurufenden Funktion mit sich trägt.
Ein Delegate-Objekt fasst also eine bestimmte Funktionsadresse mit einer dazugehörigen Signatur zusammen, übergibt das Ganze an eine andere Klasse oder einen anderen x-beliebigen Ort und stellt so sicher, dass die Funktion nur mit der richtigen Signatur aufgerufen werden kann.

Die Verwendung eines Delegate erfolgt in drei Schritten:

1. Definition des Delegate

Delegate Sub DelegateNr1(ByVal sString As String)


Dabei entsteht zunächst eine Klasse, die instanziiert werden muss.

2. Deklaration und Instanziierung eines Objektes vom Typ der Delegate-Definition

Dim TypeD As New DelegateNr1(AddressOf Console.WriteLine)


Dabei wird die Adresse der aufzurufenden Methode über den AddressOf-Operator übergeben.

3. Aufrufen der Methode

TypeD("Dieser String wird geschrieben.")

Dabei muss die Methode die gleiche Anzahl Parameter, gleiche ParameterTypen (inklusive ReturnTyp) und gleiche Parameterarten haben.

Ein Multicast-Delegate ist ein Delegate, in dem über die Combine-Methode mehrere Delegates, die aber kompatibel bezüglich ihrer Signatur sein müssen, zusammengefasst werden. Somit lassen sich über einen einzigen Aufruf mehrere Funktionen aufrufen.

Das Interessanteste ist aber, dass der gesamte Ereignismechanismus in .NET auf Delegates basieren. Sie sind das Bindeglied zwischen Ereignissender und Ereignisempfänger, wobei sie aber nicht direkt in Erscheinung treten.

Der Befehl

AddHandler myButton.Click, AddressOf MyButton_Click

 ist eigentlich die Kurzversion für

AddHandler myButton.Click, New EventHandler(AddressOf MyButton_Click)

 wobei EventHandler der Name des implizit deklarierten Delegate ist.

Bei einem Multicast-Delegate wird der Event über AddHandler mit einer beliebigen Anzahl an Prozeduren verknüpft.
Über den RemoveHandler-Befehl kann die Verknüpfung jederzeit wieder aufgehoben werden.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 15.04.2003
  Gültig bis: 14.07.2003
11 Ratings
Bewertung: 67,3%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG