Noch besser Analogien zu verwenden
Delegierte sind wie Gewalt. Wenn sie Ihr Problem noch nicht gelöst haben, haben Sie nicht genug verwendet.
OK, dieser Witz ist nicht originell , also klagt mich an.
Ernsthaft jetzt. Delegierte sind wie ... Delegierte. Daher der Name. Was ist ein Delegierter im wirklichen Leben? Ein Delegierter ist jemand, der im Auftrag eines anderen handelt . Sie delegieren arbeiten an ihnen und sie führen diese Arbeit aus. Sie wollen fünfzig Aktien der XYZ Corp. handeln, Sie gehen nicht in den Handel und tun es selbst, Sie delegieren diese Arbeit an Ihren Broker, der es für Sie tut; wie sie es machen, ist dir egal, solange es fertig ist. Der Broker ist Ihr Delegierter; Sie machen die Arbeit für Sie.
Ein Delegat ist ein Objekt, das die Fähigkeit darstellt, auf Anforderung zu arbeiten. Sie erstellen einen Delegaten, der einen bestimmten Job erledigt, und wenn Sie den Job erledigen möchten, bitten Sie Ihren Delegierten, dies für Sie zu tun.
Ein Delegierter umschließt eine Methode in eine typsichere Objektreferenz, so wie ein Bieröffner eine Methode umschließt ( Eröffnungsbier ) in einem handlichen Werkzeug (das Bieröffner ), der immer wieder für verschiedene Bierflaschen verwendet werden kann.
Es gibt einen definierten Eingang für den Bieröffner, ein bestimmte Art von Flasche und eine Kraft (Ihre Hände). Es enthält den Schlüssel zu einer Handlung, deren Form immer dieselbe ist. Ebenso ist für den Delegaten eine Eingabe definiert, die den Schlüssel, einen Vertrag, für eine Aktion (ein Formular) mit bestimmten Eingaben (das Formular) enthält.
Hinweis: Hier geht es nicht um 99 Flaschen Bier;)
Hinweis (2): Sie können a öffnen Bier ohne Bieröffner , genauso wie man eine Methode (auch die Referenz) ohne Delegierten verwenden kann. Es ist nur unordentlicher und weniger klar, aber es kann viel mehr Spaß machen.
Die beste Analogie, die ich mir vorstellen kann, kommt von der C-Terminologie, die "Zeiger auf Funktion" ist.
Die Idee ist, dass Sie in der Lage sein müssen, einen Teil des Codes aufzurufen, aber dieser Teil des Codes, den Sie aufrufen werden, ist erst zur Laufzeit bekannt. Sie verwenden also einen "Delegaten" für diesen Zweck.
Ein Delegierter ist wie ein Praktikant, wie wenn Sie sagen: "Hey, ich brauche einen Praktikanten, der mir eine Tasse Kaffee bringt."
Mit etwas Glück bekommst du jemanden, der fähig ist, "bring mir eine Tasse Kaffee". Verschiedene Praktikanten können diese Aufgabe anders ausführen, zum Beispiel Starbucks. Eine andere könnte rumlaufen, bis sie irgendwo im Gebäude eine nicht leere Kaffeekanne findet und dir eine Tasse eingießt.
Tags und Links c# programming-languages delegates