estoy confundido por qué esto compila:¿Por qué un delegado sin parámetros compila?
private delegate int MyDelegate(int p1, int p2);
private void testDelegate()
{
MyDelegate imp = delegate
{
return 1;
};
}
MyDelegate debe ser un puntero a un método que toma dos parámetros int y devuelve otra int, ¿verdad? ¿Por qué se me permite asignar un método que no toma parámetros?
Curiosamente, éstos no compila (que se queja de la falta de adaptación de la firma, como era de esperar)
private void testDelegate()
{
// Missing param
MyDelegate imp = delegate(int p1)
{
return 1;
};
// Wrong return type
MyDelegate imp2 = delegate(int p1, int p2)
{
return "String";
};
}
Gracias por cualquier ayuda!
Ryan
Muchas gracias por su respuesta; tiene buen sentido. Marqué el anterior como "correcto" simplemente porque llegó primero. ¡Gracias! – Ryan