Почему WinForms все равно обращается к свойству, которое скрыто через new?

Когда в классе потомке мы определяем свойство с использованием модификатора new, мы скрываем свойство с таким же именем, определенное в базовом классе. Однако, в наследуемых классах, объекты базового класса всё равно могут иметь доступ к свойству, которое было скрыто в классе потомке.

Когда мы создаем экземпляр класса потомка, мы можем обратиться к скрытому свойству, используя имя класса потомка и вызывая свойство с использованием оператора точки. Например, если класс потомка называется "Child" и у него есть скрытое свойство "Name", мы можем обратиться к этому свойству следующим образом: "Child.Name".

Однако, когда мы работаем с объектом базового класса, даже если он ссылается на объект потомка, мы не можем обратиться к скрытому свойству, используя имя базового класса. Например, если у нас есть объект базового класса "Base" с ссылкой на объект класса "Child", мы не можем обратиться к скрытому свойству "Name" с помощью "Base.Name".

Однако, если мы явно приведем объект базового класса к типу класса потомка, мы сможем обратиться к скрытому свойству. Например, если у нас есть объект базового класса "Base" с ссылкой на объект класса "Child", мы можем явно привести этот объект к типу "Child" и обратиться к скрытому свойству следующим образом: "(Child)baseObject.Name".

Таким образом, WinForms все равно может обратиться к скрытому свойству, если мы явно приведем объект базового класса к типу класса потомка.