У меня есть базовый класс и производный класс, как показано ниже
public class animal
{
public string name { get; set; }
}
public class dog : animal
{
public int age { get; set; }
public string type { get; set; }
}
animal a = new animal();
dog d = new dog();
a = d; //compiled
d = a; //Error:Cannot implicitly convert type 'animal' to 'dog'.
d = (dog)a; // compiled
Что происходит внутри, что производный класс может быть присвоен базовому, но требуется обратное явное преобразование? Тот же результат обнаружен, даже если и базовый, и производный класс содержат один и тот же член.