Pergunta

Eu tenho um código que se parece com isso:

using (DC dc = new DC())
{
    f(dc.obj, a);
}


void f(DC dc, int a)
{
    ...
    dc.obj = a;
}

Ele não funciona - reclama de referência de objeto e os campos não-estático. Este é um aplicativo de console, por isso tem a função Main (). Como devo fazê-lo funcionar? Eu tentei adicionar referências como ele perguntou:

Eu tenho um código que se parece com isso:

using (DC dc = new DC())
{
    f(ref dc.obj, a);
}


void f(ref DC dc, int a)
{
    ...
    dc.obj = a;
}

mas o trabalho ainda não funcionavam

Foi útil?

Solução

Isto não tem nada a ver com a instrução usando. Você está tentando chamar uma função de membro não-estático do principal, que é estática. Você não pode fazer isso porque 'f' é um método de instância, ou seja, você deve chamá-lo em ou a partir de uma instância de sua classe Program. Então, você precisa fazer a sua função f estático.

Outras dicas

f é um método de instância, presumivelmente na classe Programa, certo? Se você está chamando f de Main, então não há nenhuma instância do Programa, pois principal é um método estático. Mudança f ser estático:

static void f(DC dc, int a) { ... }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top