Пустое поле в производном классе - C#
Формулировка задачи:
Добрый день!
Не могли бы вы подсказать ответ на такой вопрос:
Есть базовый класс:
И далее создаются производные классы, которые помимо прочего будут дополнять метод GetInfo базового класса своими данными:
Вопрос собственно заключается в том, что в производных классах поле base.GetInfo() пустое, но если свойству Name в базовом классе сразу задать значение, а не из конструктора, то все выводится правильно...
Подскажите, что подправить надобно!
Листинг программы
- public class AutoOrganization
- {
- public string Name { get; set; }
- public AutoOrganization(string name)
- {
- this.Name = name;
- }
- public virtual void GetInfo()
- {
- Console.WriteLine("Название автопредприятия: "+Name);
- }
- }
Листинг программы
- private static double Mileage;
- private static int busCount;
- public Bus(double mileage)
- {
- Mileage += mileage;
- busCount++;
- }
- public static void GetMileage()
- {
- Console.WriteLine("Пробег: "+Mileage);
- }
- public double AverageMileage()
- {
- return Mileage / busCount;
- }
- public override void GetInfo()
- {
- base.GetInfo();
- Console.WriteLine("Общий пробег автобусов: " + Mileage);
- Console.WriteLine("Количество автобусов в автопарке: "+busCount);
- Console.WriteLine("Средний пробег одного автобуса: " + AverageMileage());
- }
- }
Решение задачи: «Пустое поле в производном классе»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace AutoParkLib
- {
- public abstract class Auto
- {
- public string Number { get; set; }
- public int Mileage { get; set; }
- public Auto(string number, int mileage)
- {
- Number = number;
- Mileage = mileage;
- }
- }
- public class Bus : Auto
- {
- private int SeatsNumber { get; set; }
- public Bus(string number, int mileage, int seatsNumber)
- : base(number, mileage)
- {
- SeatsNumber = seatsNumber;
- }
- }
- public class Truck : Auto
- {
- public int Carrying { get; set; }
- public Truck(string number, int mileage, int carrying)
- : base(number, mileage)
- {
- Carrying = carrying;
- }
- }
- public class AutoPark
- {
- public List<Auto> AutoList { set; get; }
- public string ParkName;
- public AutoPark(string parkName)
- {
- ParkName = parkName;
- AutoList = new List<Auto>();
- }
- public void Add(Auto auto)
- {
- AutoList.Add(auto);
- }
- public double AverMiliage<T>()
- {
- return AutoList.OfType<T>().Average(x => (x as Auto).Mileage);
- }
- }
- class Program
- {
- public static void Main(string[] args)
- {
- AutoPark park = new AutoPark("Автопарк №1");
- park.Add(new Bus("123321", 500000, 55));
- park.Add(new Truck("3245345", 100000, 5));
- park.Add(new Bus("56786", 200000, 80));
- park.Add(new Truck("2345", 120000, 15));
- park.Add(new Bus("567856", 260000, 40));
- Console.WriteLine("Средний пробег автобусов {0}", park.AverMiliage<Bus>());
- Console.WriteLine("Средний пробег грузовиков {0}", park.AverMiliage<Truck>());
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д