Fintanto che il metodo metodo SomeObject.SomeMethod
ha un metodo con tipo di ritorno void
e non richiede alcun parametro, non vi è alcuna differenza. Questo perché ThreadStart
è definito come delegate
che restituisce void
e non accetta parametri e pertanto esiste una conversione implicita dal gruppo di metodi SomeObject.SomeMethod
a ThreadStart
. Pertanto, entrambi stanno invocando il sovraccarico Thread(ThreadStart)
del costruttore Thread
.
La sezione pertinente della specifica della lingua è §6.6 (Conversioni di gruppo metodo).
Ho una semplice domanda: qual è il vantaggio dell'istanziazione di un delegato C# rispetto al solo passaggio del riferimento di funzione?
Quindi, solo una correzione della terminologia qui. Con
class MyObject {
public void SomeMethod() { }
}
MyObject someObject = new MyObject();
la cosa indicata con someObject.SomeMethod
è un gruppo metodo. Si può semplicemente pensare a come l'insieme di metodi sovraccaricati può essere consultato usando la notazione someObject.SomeMethod
.
possibile duplicato di [Qual è la differenza tra la nuova Action() e una lambda?] (Http://stackoverflow.com/questions/765966/what-is-the-difference-tra between-new-action-and- a-lambda) – nawfal