Delegate-Methoden vs-Allgemeine Methoden
Ich will wissen, den Unterschied zwischen der Verwendung von Delegaten Methoden und mit Allgemeinen Methoden[ohne Delegierte].
Zum Beispiel :
Mit Delegieren :
delegate void DelMethod(string str);
static void Method(string str)
{
Debug.WriteLine(str);
}
Verwendung :
DelMethod dm = new DelMethod(Method);
dm(string);
Und Ohne Stellvertretung :
static void Method(string str)
{
Debug.WriteLine(str);
}
Verwendung :
Method(string)
Was sind die Unterschiede der beiden??
Die Methode ohne delegieren ist kleiner und einfach. Aber ich finde die Programmierer verwenden Delegierter Verfahren Häufig.
Was ist der Grund dafür??
Du musst angemeldet sein, um einen Kommentar abzugeben.
Delegierten werden für eine andere situation. Vorstellen, dass Sie eine Klasse haben, die beantworten sollten, etwas von einer anderen Klasse, aber Sie wissen nichts über die zweite Klasse. In einer solchen situation, die Sie tun können, einen Delegierten in die erste.
Class A
weiß nichts über dieclass B
, aber er kann rufen Sie B Methoden und bekommen Sie die Ergebnisse. DieAnswer
Methode inclass B
ist private undclass A
können Sie nicht direkt aufrufen.Lesen Sie mehr in MSDN
Sich ein Szenario vorstellen, in dem Sie eine Funktion haben, dass die Suche nach einem Kunden. Zunächst wollen Sie nur nach einem Namen suchen, so dass Sie etwas schreiben wie:
Dann Ihre Spezifikationen ändern und Sie haben die Umsetzung der neuen Möglichkeiten zu suchen (sagen wir mal "search-by-address"). Kein problem, wir überarbeiten unsere alten code:
Sie sehr ähnlich Aussehen, nicht wahr?
Nun Ihrem Chef sagen Sie wieder Sie zum hinzufügen eines weiteren such-Funktionen, die Benutzer zu finden, Kunden per Telefon Nummer. Es wird langsam langweilig, nicht wahr?
Glücklicherweise haben die Entwickler einen Weg gefunden, um anderen Entwicklern das Leben leichter zu erfinden Delegierten. Mit Ihnen könnten Sie einen größeren, Allgemeinen Funktion, die Ihnen hilft, zu verhindern, dass Ersetzungen die gleiche code-Stücken, wieder und wieder.
Jetzt müssen Sie nicht haben, um eine spezielle Funktion jedes mal, wenn Sie brauchen eine neue Art von Kunden suchen, so können Sie schreiben:
Delegierten sind auch nützlich zur Verwaltung von Terminen und werden intensiv genutzt, auch in LINQ. Google einfach mal "Delegaten c#", und Sie werden entdecken Sie eine riesige neue Welt! 🙂
Andere Verwendung von Delegaten:
Ohne die Anwesenheit von Delegierten, nur die Klasse definiert Ihre private Methoden werden in der Lage, rufen Sie diese Methoden. Mit der Verpackung der Methoden innerhalb einer delegieren, die Sie nicht passieren konnten, Ihre Delegat-Instanz für andere Klassen, und lassen Sie Sie aufrufen des Delegaten (als Rückruf) mit den richtigen Parametern und das wäre schließlich rufen Sie Ihren tatsächlichen privaten Methode innerhalb der Klasse definieren.
Zum Beispiel :
Im Allgemeinen MSDN hat Folgendes zu sagen: bei Dieser Artikel :
Delegierten sind nützlich, wenn:
Gibt es ein spezielles Szenario, in dem die beiden Aufrufe unterscheiden sich, dh, wenn es um optionale Argumente. Betrachten Sie diese
Aber
Im ersten Fall ist es das optionale argument des Delegaten, der eingefügt wird, an der call-site.