Внутренний класс и класс Outer в С#

как реализовать внутренние внешние классы в С#

У меня есть два вложенных класса

как

class Outer
{
    int TestVariable = 0;
    class Inner
    {
        int InnerTestVariable = TestVariable // Need to access the variable "TestVariable" here
    }
}

Показывает ошибку при компиляции.

Его можно решить с помощью

1) Создание TestVariable как статического

2) Передача экземпляра класса Outer классу Inner

но в java нет необходимости создавать экземпляр или статический.

Можно ли использовать ту же функциональность и на С#?

Ответ 1

Нет, в этом случае С# не имеет той же семантики, что и Java. Вы можете сделать TestVariable const, static или передать экземпляр Outer в конструктор Inner, как вы уже отметили.

Ответ 2

Вы можете создать экземпляр внутреннего класса, даже не имея экземпляр внешнего класса, что должно произойти в том случае, если вы думаете? Вот почему вы не можете его использовать

Outer.Inner iner = new Outer.Inner(); // what will be InnerTestVariable value in this case? There is no instance of Outer class, and TestVariable can exist only in instance of Outer

Вот один из способов сделать это

  class Outer
    {
        internal int TestVariable=0;
        internal class Inner
        {
            public Inner(int testVariable)
            {
                InnerTestVariable = testVariable;
            }
           int InnerTestVariable; //Need to access the variabe "TestVariable" here
        }
        internal Inner CreateInner()
        {
            return new Inner(TestVariable);
        }
    }

Ответ 3

Сделать переменную internal или перейти к внутренней constructor

Ответ 4

Короткий ответ: Нет,

Вам нужно как-то вставить TestVariable в свой Внутренний класс. Создание testVariable может привести к нежелательному поведению. Моим предложением было бы ввести его через конструктор.