Чтобы получить доступ к членам из производного типа, используя переменную базового типа, вы должны явно преобразовать переменную в производный тип
Parent parent = new Child();
Child child = (Child)parent;
child.y = 10;
Но вы должны иметь в виду, что Child child = (Child)parent;
может выдать исключение времени выполнения, если parent
содержит объект другого типа, например, если вы написали Parent parent = new AnotherChild();
выше
Вы можете избежать исключения во время выполнения, используя is
operator
if (parent is Child)
{
Child child = (Child)parent;
child.y = 10;
}
Или лучше, используя as
оператор
Child child = parent as Child;
if (child != null)
{
child.y = 10;
}
Оператор as
никогда не сгенерирует исключение. Вместо этого, если объект не может быть приведен, результат будет нулевым.