Всех шарпников приветствую! Сейчас выполняю стажировочное задание и как-то завис на одном моменте. Тут у меня есть Main. Есть коллекция Carlist и в нее нужно записать объект, который содержит в себе Car, Human и Engine. Другими словами : мне нужно записывать объект, который содержит параметры трёх классов. Либо в объект Car засунуть Human и Engine и записывать так в коллекцию, но таким образом вылетает ошибка "Вы не можете вместо int\string записать Human\Engine" Буду ОЧЕНЬ благодарен! Будут вопросы пишите! Если нужен полный код, тоже пишите! static void Main() { List<Car> CarsList = new(); while (true) { Console.WriteLine("Привет! Что ты хочешь сделать? 1 - записать новую машину, 2 - вывести все машины, 3 - Задать команду машине "); switch (Console.ReadLine()) { case "1": // сделать проверку на ввод // Сначала записываем водителя Console.WriteLine("Введи имя водиетля"); string addname = Console.ReadLine(); Console.WriteLine("Введи возраст водителя"); int addage = Convert.ToInt32(Console.ReadLine()); //запись машины Console.WriteLine("Какой тип у машины?"); string addtype = Console.ReadLine(); Console.WriteLine("Какой цвет у машины?"); string addcolour = Console.ReadLine(); int carid = 0; carid = carid++; //запись двигателя Console.WriteLine("Какой тип у двигателя?"); string addetype = Console.ReadLine(); Console.WriteLine("Сколько литров?"); int addliters = Convert.ToInt32(Console.ReadLine()); CarsList.Add(new Car(addtype, addcolour, carid, addname, addage, addetype, addliters )); CSHARP static void Main() { List<Car> CarsList = new(); while (true) { Console.WriteLine("Привет! Что ты хочешь сделать? 1 - записать новую машину, 2 - вывести все машины, 3 - Задать команду машине "); switch (Console.ReadLine()) { case "1": // сделать проверку на ввод // Сначала записываем водителя Console.WriteLine("Введи имя водиетля"); string addname = Console.ReadLine(); Console.WriteLine("Введи возраст водителя"); int addage = Convert.ToInt32(Console.ReadLine()); //запись машины Console.WriteLine("Какой тип у машины?"); string addtype = Console.ReadLine(); Console.WriteLine("Какой цвет у машины?"); string addcolour = Console.ReadLine(); int carid = 0; carid = carid++; //запись двигателя Console.WriteLine("Какой тип у двигателя?"); string addetype = Console.ReadLine(); Console.WriteLine("Сколько литров?"); int addliters = Convert.ToInt32(Console.ReadLine()); CarsList.Add(new Car(addtype, addcolour, carid, addname, addage, addetype, addliters )); Car(я тут много возился, поэтому наверно ничего не понятно)): public string? Addtype { get; } public string? Addcolour { get; } public int Carid { get; } public string Addname { get; } public int Addage { get; } public string Etype { get; } public int Liters { get; } public Car(string type, string colour, int id, Human name, Human age, Engine etype, Engine liters) { this.type = type; this.colour = colour; this.id = id; this.name = name; this.age = age; this.etype = etype; this.liters = liters; } CSHARP public string? Addtype { get; } public string? Addcolour { get; } public int Carid { get; } public string Addname { get; } public int Addage { get; } public string Etype { get; } public int Liters { get; } public Car(string type, string colour, int id, Human name, Human age, Engine etype, Engine liters) { this.type = type; this.colour = colour; this.id = id; this.name = name; this.age = age; this.etype = etype; this.liters = liters; } Human: public class Human { public string name; public int age; public Human(string name, int age) { this.name = name; this.age = age; } } CSHARP public class Human { public string name; public int age; public Human(string name, int age) { this.name = name; this.age = age; } } Enginge public class Engine { public string etype; public int liters; public Engine(string etype, int liters) { this.etype = etype; this.liters = liters; } } CSHARP public class Engine { public string etype; public int liters; public Engine(string etype, int liters) { this.etype = etype; this.liters = liters; } }
Интересно, куда стажируетесь? Случайно отжал шифт при переносе строки, не до конца написал... Советую изучить тему композиции, вы явно ее пропустили судя по вашему коду // MAIN CarsList.Add(new Car(addtype, addcolour, carid, new Human(addname, addage), new Engine(addetype, addliters))); CSHARP // MAIN CarsList.Add(new Car(addtype, addcolour, carid, new Human(addname, addage), new Engine(addetype, addliters))); // CAR public Car(string type, string colour, int id, Human human, Engine engine) { this.type = type; this.colour = colour; this.id = id; this.Human = human; this.Engine = engine; } CSHARP // CAR public Car(string type, string colour, int id, Human human, Engine engine) { this.type = type; this.colour = colour; this.id = id; this.Human = human; this.Engine = engine; }
Так ты в конструкторе присваиваешь объекты Human и Engine переменным с типом string и int. В классе Car убери все поля связанные с Human и Engine и вместо них создать поля с типом Human и Engine соответственно. В конструктор передавай уже созданные объекты