static void Main(string[] args) { Transport transport = new Transport("type", 111); transport.DoClone(); Transport.Car car = new Transport.Car("name"); car.DoClone(); Transport.Train train = new Transport.Train(222); train.DoClone(); Transport.Car.Motor motor = new Transport.Car.Motor(30); motor.DoClone(); Transport.Train.Motor motor1 = new Transport.Train.Motor(40); Transport.Train.Express express = new Transport.Train.Express(555); express.DoClone(); Transport.Train.Carriage carriage = new Transport.Train.Carriage(60); carriage.DoClone(); if (train is Transport) { //Ключевое слово IS позволяет сравнить объект и тип данных, что бы определить принадлежит ли наш объект этому типу. Возвращает данная конструкция либо true либо false. Console.WriteLine("Train is transport"); } else { Console.WriteLine("Train is not transport"); } Transport.Car car1 = transport as Transport.Car; //Ключевое слово AS служит для перевода объекта к указанному типу, но в отличие от знакомой конструкции используемой в примере выше [(тип)объект], в случае невозможности привести объект к указанному типу мы вместо исключения получим null. if (car1 == null) { Console.WriteLine("Преобразование прошло неудачно"); } else { Console.WriteLine("Преобразование прошло удачно"); } dynamic[] arrayOfTransport = new dynamic[] { train, transport, carriage, car }; Printer printer = new Printer(); printer.IAmPrinting(train); printer.IAmPrinting(car); printer.IAmPrinting(carriage); }
static void Main(string[] args) { Transport transport = new Transport("type", 111); transport.DoClone(); Transport.Car car = new Transport.Car("name"); car.DoClone(); Transport.Train train = new Transport.Train(222); train.DoClone(); Transport.Car.Motor motor = new Transport.Car.Motor(30); motor.DoClone(); Transport.Train.Motor motor1 = new Transport.Train.Motor(40); Transport.Train.Express express = new Transport.Train.Express(555); express.DoClone(); Transport.Train.Carriage carriage = new Transport.Train.Carriage(60); carriage.DoClone(); if (train is Transport) { Console.WriteLine("Train is transport"); } else { Console.WriteLine("Train is not transport"); } Transport.Car car1 = transport as Transport.Car; if (car1 == null) { Console.WriteLine("Преобразование прошло неудачно"); } else { Console.WriteLine("Преобразование прошло удачно"); } dynamic[] arrayOfTransport = new dynamic[] { train, transport, carriage, car }; Printer printer = new Printer(); printer.IAmPrinting(train); printer.IAmPrinting(car); printer.IAmPrinting(carriage); }