or que um método de membro não pode ser passado para um construtor de classe bas
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()
{
}
}
O compilador fornece um erro "É necessário um objeto para o campo, método ou propriedade não estática 'Project.Namespace.Class.GiveDumbLook'.
Isso não é diferente de passar uma ação como parâmetro para qualquer outro método. Por que isso é inválido?
Edita Ótimas respostas. Obrigado a todos. Acho que isso me confunde, porque parece que é o lado oposto da moeda deessa questã; onde a resposta mais votada declara claramente
Um objeto C # é totalmente construído e inicializado como zero antes da execução do primeiro construto
Por essa declaração, parece que o código acima deve funcionar. Aparentemente, há uma diferença sutil.