door Vladimir Lenin » di 18 aug 2009, 20:05
Een delegate is een wijzer naar een functie, maar ook een klasse maar die discussie doet hier eigenlijk niet veel terzake. Een event zou je kunnen zien als een lijst van delegates, op het moment dat er iets aan de toestand van een object dat het belangrijk genoeg vindt om aan eventueel geïntresseerde objecten te laten weten zal hij het event oproepen, de event zal vervolgens alle delegates in zn lijst nagaan, en elke delegate oproepen, deze zullen dus vervolgens de functie die aan hun gelinkt is oproepen.
Een concreet voorbeeld, je maakt een form om bijvoorbeeld een contactpersoon toe te voegen, in dat form plaats je een Button waarop de gebruiker klikt wanneer hij gereed is, dan zou je in de implementatie van bijvoorbeeld de klasse Persoon (een object die je dus al gecriëerd hebt en waarvan je de naam, geboortedatum,... wil checken) dat natuurlijk graag weten, want het moet dan de informatie aanpassen, je kan dus een methode van de klasse persoon zeg maar de methode SetInformationWithInformationFromForm als Listener kunnen zien, je voegt deze toe aan de Click-event van de Button. Op het moment dat de gebruiker op de knop klikt zal de klasse Button het Click-Event activeren, de methode SetInformationWithInformationFromForm staat op de lijst, en zal dus opgeroepen worden, dat is ongeveer het principe.
Een delegate is een wijzer naar een functie, maar ook een klasse maar die discussie doet hier eigenlijk niet veel terzake. Een event zou je kunnen zien als een lijst van delegates, op het moment dat er iets aan de toestand van een object dat het belangrijk genoeg vindt om aan eventueel geïntresseerde objecten te laten weten zal hij het event oproepen, de event zal vervolgens alle delegates in zn lijst nagaan, en elke delegate oproepen, deze zullen dus vervolgens de functie die aan hun gelinkt is oproepen.
Een concreet voorbeeld, je maakt een form om bijvoorbeeld een contactpersoon toe te voegen, in dat form plaats je een Button waarop de gebruiker klikt wanneer hij gereed is, dan zou je in de implementatie van bijvoorbeeld de klasse Persoon (een object die je dus al gecriëerd hebt en waarvan je de naam, geboortedatum,... wil checken) dat natuurlijk graag weten, want het moet dan de informatie aanpassen, je kan dus een methode van de klasse persoon zeg maar de methode SetInformationWithInformationFromForm als Listener kunnen zien, je voegt deze toe aan de Click-event van de Button. Op het moment dat de gebruiker op de knop klikt zal de klasse Button het Click-Event activeren, de methode SetInformationWithInformationFromForm staat op de lijst, en zal dus opgeroepen worden, dat is ongeveer het principe.