В языке программирования C#, статические переменные являются переменными, которые разделяются между всеми экземплярами класса и доступны через сам класс, вместо конкретного экземпляра. Они удобны для хранения информации, которая является общей для всех экземпляров класса.
Если вы хотите создать новую статическую переменную в наследнике, вам следует использовать модификатор static в объявлении переменной. При этом, переменная будет доступна как через класс-наследник, так и через класс-родитель.
Например, у нас есть базовый класс ParentClass
и класс-наследник ChildClass
. Для создания новой статической переменной в классе-наследнике, вам необходимо объявить ее с использованием модификатора static:
public class ParentClass { public static int parentVariable = 10; } public class ChildClass : ParentClass { public static int childVariable = 20; }
Теперь у нас есть две статические переменные: parentVariable
, объявленная в базовом классе ParentClass
, и childVariable
, объявленная в классе-наследнике ChildClass
. Обе переменные будут доступны и из ParentClass
, и из ChildClass
.
Console.WriteLine(ParentClass.parentVariable); // Выведет: 10 Console.WriteLine(ChildClass.childVariable); // Выведет: 20
Однако, если вам необходимо иметь новую переменную, доступную только из класса-наследника и недоступную из базового класса, вы можете использовать другой подход.
Вы можете создать новую статическую переменную в классе-наследнике и скрыть статическую переменную с тем же именем из родительского класса, используя ключевое слово new
. В этом случае, переменная будет доступна только через класс-наследник.
public class ParentClass { public static int parentVariable = 10; } public class ChildClass : ParentClass { public new static int parentVariable = 20; }
Теперь у нас есть две статические переменные с именем parentVariable
, но они связаны с разными классами. Первая переменная parentVariable
будет доступна как через ParentClass
, так и через ChildClass
. Вторая переменная parentVariable
будет доступна только через ChildClass
.
Console.WriteLine(ParentClass.parentVariable); // Выведет: 10 Console.WriteLine(ChildClass.parentVariable); // Выведет: 20
В результате, у вас есть два варианта для создания новой статической переменной в классе-наследнике. Если вам необходимо иметь новую переменную, которая будет доступна из базового класса и его наследников, используйте модификатор static. Если же вам необходимо иметь новую переменную, недоступную из базового класса, используйте модификатор new.