Siempre que el grupo de métodos SomeObject.SomeMethod
tenga un método con retorno tipo void
y no tome ningún parámetro, no hay diferencia. Esto es porque ThreadStart
se define como delegate
que devuelve void
y no toma ningún parámetro y, por lo tanto, hay una conversión implícita del grupo de métodos SomeObject.SomeMethod
a ThreadStart
. Por lo tanto, ambos invocan la sobrecarga Thread(ThreadStart)
del constructor Thread
.
La sección correspondiente de la especificación de idioma es §6.6 (conversiones de grupo de métodos).
Tengo una pregunta simple: ¿cuál es la ventaja de instanciar un delegado C# en lugar de simplemente pasar la referencia de función?
Por lo tanto, solo una corrección de la terminología aquí. Con
class MyObject {
public void SomeMethod() { }
}
MyObject someObject = new MyObject();
lo denotado por someObject.SomeMethod
es un grupo método. Puedes pensarlo ya que el conjunto de métodos sobrecargados puede buscarse usando la notación someObject.SomeMethod
.
posible duplicado de [¿Cuál es la diferencia entre la nueva Acción() y una lambda?] (Http://stackoverflow.com/questions/765966/what-is-the-difference-between-new-action-and- a-lambda) – nawfal