Forums Neueste Beiträge
 

Frage zu Delegate

07/01/2010 - 22:54 von Peter Gast | Report spam
Hallo,
ich habe eine Klasse (Aufgabe) und möchte abhàngig davon zu welchen
Endobjekt die Klasse gefüllt wird, bei Aufruf einer gleichnamigen Methode
spezifisch zu der Berechnungsmethode springen, die für diese Klasse
konzipiert wurde. Der Konstrukt funktioniert, meine Frage ist ob ich den
Ausdruck "aufgab.Berechnung(aufgab)" noch vereinfachen kann, da ja der
übergebene PArameter die Klasse selbst ist?

Danke Peter


Public Class Aufgabe
Delegate Sub BerechnungsDelegat(ByVal aufgabe As Aufgabe)
Public Berechnung As BerechnungsDelegat
End Class

Public Class Tester
Public Sub Starten()
Dim aufgab As New Aufgabe
aufgab.Berechnung = AddressOf Berechnungen.Typ1
aufgab.Berechnung(aufgab)
End Sub
End Class

Public Class Berechnungen
Public Shared Sub Typ1(ByVal aufgab As Aufgabe)
End Sub
End Class
 

Lesen sie die antworten

#1 Armin Zingler
07/01/2010 - 23:39 | Warnen spam
Peter Gast schrieb:
Hallo,
ich habe eine Klasse (Aufgabe) und möchte abhàngig davon zu welchen
Endobjekt die Klasse gefüllt wird, bei Aufruf einer gleichnamigen Methode
spezifisch zu der Berechnungsmethode springen, die für diese Klasse
konzipiert wurde. Der Konstrukt funktioniert, meine Frage ist ob ich den
Ausdruck "aufgab.Berechnung(aufgab)" noch vereinfachen kann, da ja der
übergebene PArameter die Klasse selbst ist?

Danke Peter


Public Class Aufgabe
Delegate Sub BerechnungsDelegat(ByVal aufgabe As Aufgabe)
Public Berechnung As BerechnungsDelegat
End Class

Public Class Tester
Public Sub Starten()
Dim aufgab As New Aufgabe
aufgab.Berechnung = AddressOf Berechnungen.Typ1
aufgab.Berechnung(aufgab)
End Sub
End Class

Public Class Berechnungen
Public Shared Sub Typ1(ByVal aufgab As Aufgabe)
End Sub
End Class



Mal so gefragt: Warum befindet sich Sub Typ1 nicht in der Klasse Aufgabe?
Dann würde sich die Übergabe erübrigen. Also:

Class Aufgabe
Delegate Sub BerechnungsDelegat()
Public Berechnung As BerechnungsDelegat
Sub Typ1()
End Sub
End Class

Public Class Main
Shared Sub Main()
Dim aufgab As New Aufgabe
aufgab.Berechnung = AddressOf aufgab.Typ1
aufgab.Berechnung() 'hier keine Übergabe notwendig

End Sub
End Class

Intern passiert auch nichts anderes, aber man muss "Me" immerhin nicht
explizit übergeben.


Armin

Ähnliche fragen