Como passar “usando” objetos -tipo para uma função?
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
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) { ... }