Eu tenho uma classe C com algumas variáveis internas. Possui uma classe N aninhada que deseja acessar as variáveis em C. Nem C nem N são estáticos, embora C possua alguns métodos e variáveis estáticos. Quando tento acessar uma variável não estática em C de N, recebo o sublinhado ondulado e a mensagem "Não é possível acessar o campo não estático [nome do campo] no contexto estático".
Isso parece ter algo a ver com a classe aninhada, pois posso acessar a variável fine da própria classe envolvente.
O ReSharper sugere que eu faça _t estático, mas isso não é uma opção. Como faço para lidar com isso?
public sealed partial class C
{
string _t;
class N
{
void m()
{
_t = "fie"; // Error occurs here
}
}
}
Respostas:
12 para resposta № 1Isso não é Java e você não tem interior classes.
Uma instância de uma classe aninhada não está associada a nenhuma instância da classe externa, a menos que você faça uma associação armazenando uma referência (também conhecida como manipulador / ponteiro) dentro do construtor.
public sealed partial class C
{
string _t;
class N
{
readonly C outer;
public N(C parent) { outer = parent; }
void m()
{
outer._t = "fie"; // Error is gone
}
}
}