/ / Classe aninhada: não é possível acessar o campo não estático no contexto estático - c #, classe aninhada

Classe aninhada: Não é possível acessar o campo não estático no contexto estático - c #, aninhado-classe

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 № 1

Isso 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
}
}
}