У меня есть базовый класс и два дочерних класса с одним классом, имеющим дополнительные поля.Функция принимает базовый класс в качестве аргумента и преобразует его в дочерний класс во время выполнения, но приведение базового класса к классу B приводит к ошибке
public class Base {
int x
}
public class A :Base {
A() { x= 5;}
}
public class B :Base {
int y ;
B() { x=5
y=5;
}
}
, а при приведении базового класса к дочернему классу во время выполнения выдает недопустимую операцию приведения.ошибка
public int getValue(Base base) {
A a = base as A //works fine
B b = base as B // throws invalid cast opertions
return (a.x + b.x + b.y)
}
Это должно сработать, потому что оба класса наследуют от базы, но не могут понять, почему он не работает в классе B.
Почему это так?