static void Run(string[] args) { CarFactory buildCar = BuildCar; // covariance, using more derived type for return value Car bmwX5 = buildCar("BMW X5"); bmwX5.Display(); PrintBMWInfo getCarInfo = GetCarInfo; // contrvariance, using more generic type that was specified for passing argument getCarInfo((BMW)bmwX5); }
static void Main(string[] args) { CarFactory buildCar = BuildCar; // covariant assign Car bmwX5 = buildCar("BMW X5"); bmwX5.Display(); PrintBMWInfo getCarInfo = GetCarInfo; // contrvariant assign getCarInfo((BMW)bmwX5); }