¿Por qué no se puede pasar un método miembro a un constructor de clase base?
class Flarg
{
private readonly Action speak;
public Action Speak
{
get
{
return speak;
}
}
public Flarg(Action speak)
{
this.speak = speak;
}
}
class MuteFlarg : Flarg
{
public MuteFlarg() : base(GiveDumbLook)
{
}
private void GiveDumbLook()
{
}
}
El compilador da un error "Se requiere un objeto para el campo, método o propiedad no estático 'Project.Namespace.Class.GiveDumbLook'.
Esto no parece diferente a pasar una acción como parámetro a cualquier otro método. ¿Por qué esto no es válido?
Edita Grandes respuestas. Gracias a todos. Supongo que esto solo me confunde, porque parece que es el lado opuesto de la moneda deesta pregunt; donde la respuesta más votada indica claramente
Un objeto C # está completamente construido e inicializado a cero antes de que se ejecute el primer constructor.
Por esa declaración, parece que el código anterior debería funcionar. Aparentemente hay una sutil diferencia.