Наследование в c# без ссылок на поля

Есть класс от которого наследуются несколько других. Он содержит: динамическое поле, статическое поле, конструктор, динамический метод.

class Parent
{
    public int num;
    public static string text;

    public Parent(int num)
    {
        this.num = num;
    }

    public void Method() { #dosomething }
}

class Child1 : Parent
{
    public Child1(int num) : base(num) { } 
}

class Child2 : Parent
{
    public Child2(int num) : base(num) { } 
}

Если я попробую изменить поле text в одном из детей, то изменится поле у родителя. Как мне сделать чтобы они не ссылались на Родителя а имели каждый собственное поле?

Child1.text = "qwe";
Child2.text = "123";

Ответы (1 шт):

Автор решения: CrazyElf

Просто перекройте в классах-наследниках родительское поле text:

class Child1 : Parent
{
    public static new string text;
    public Child1(int num) : base(num) { } 
}

class Child2 : Parent
{
    public static new string text;
    public Child2(int num) : base(num) { } 
}

Только нужно добавить ключевое слово new, иначе компилятор сомневается - намеренно ли было сделано перекрытие или случайно.

→ Ссылка