Solange die Methodengruppe SomeObject.SomeMethod
eine Methode mit dem Rückgabetyp void
hat und keine Parameter enthält, gibt es keinen Unterschied. Dies liegt daran, dassals delegate
definiert ist, das void
zurückgibt und keine Parameter akzeptiert. Daher gibt es eine implizite Konvertierung von der Methodengruppe SomeObject.SomeMethod
zu . Somit rufen beide die Überlastung Thread(ThreadStart)
des Thread
Konstruktors auf.
Der relevante Abschnitt der Sprachspezifikation ist §6.6 (Methodengruppenkonvertierungen).
Ich habe eine einfache Frage: Was ist der Vorteil der Instanziierung eines C# -Delegate im Gegensatz zu nur die Funktionsreferenz übergeben?
Also, nur eine Korrektur der Terminologie hier. Mit
class MyObject {
public void SomeMethod() { }
}
MyObject someObject = new MyObject();
die von someObject.SomeMethod
bezeichnet, was eine Methodengruppe. Sie können es einfach als die Menge überladener Methoden betrachten, die mit der Notation someObject.SomeMethod
nachgeschlagen werden kann.
möglich Duplikat [Was ist der Unterschied zwischen dem neuen Aktion ist() und ein Lambda?] (Http://stackoverflow.com/questions/765966/what-is-the-difference-between-new-action-and- a-lambda) – nawfal