Предполагая, что у меня есть два класса следующим образом:Почему нет дочернего класса, ограниченного свойствами родителя?
class Fruit
{
public string color { get; set; }
}
class Orange : Fruit
{
public double diameter { get; set; }
}
А затем создать оранжевый объект внутри плодового переменной
Fruit fruit = new Orange() { color = "Orange", diameter = 10.0 };
// This line prints 10 even though the Fruit class doesn't contain a
// diameter property
Console.WriteLine(((Orange) fruit).diameter);
Как пришел весь оранжевый, включая имущество диаметра, может втиснуться в плодах переменная? Почему переменная фруктов не ограничивается определением класса Fruit?
В чем разница, если вместо этого я помещу новый оранжевый в переменную Orange, как в этом примере?
Orange fruit = new Orange() { color = "Orange", diameter = 10.0 };
Единственное различие, которое я могу найти, если я делаю тесты типа на переменные, и что мне не нужно слепок перед использованием объекта. Но для этого должно быть больше, не так ли?
Это именно то, что касается кастинга ... В противном случае это было бы бесполезно. –