Ссылочные типы и полиморфизм, приведение пользовательских типов - C#
Формулировка задачи:
Здравствуйте! Не могу въехать в одну концепцию, а именно - приведение пользовательских типов.
Если приведение встроенных типов не вызывает недопониманий:
То приведение пользовательских типов вызывает вопрос.
Почему я не могу привести базовый типа в производный? Аналогичная ситуация с потерей данных? Если да, то что может потеряться? Формально конечно я знаю, что нельзя преобразовать базовый тип в производный, но логики не улавливаю.
Возможно я не совсем правильно понимаю что означает тип (переменная типа), в частности в контексте C#.
О, уважаемые! Прошу помощи.
int i = 250; // Ошибка! Т.к возможна потеря данных, ибо максимальное значение типа byte = 255, а у int 2 147 483 647 byte b = i;
Решение задачи: «Ссылочные типы и полиморфизм, приведение пользовательских типов»
textual
Листинг программы
class Animal {}
class Cat : Animal {}
class Dog : Animal {}
Cat cat = new Cat();
Animal someAnimal = cat;
Dog dog = someAnimal; // (cat)... WTF?!