@zaralX
Я человек, я упал с луны.

Как исправить ошибку не удается неявно преобразовать тип (CS0029)?

Здраствуйте.
Начну с того что сразу скажу что исправление при помощи
throw new NotImplementedException();
которое предлагает VS Code не подойдёт тк при использовании combobox поментально кидает к ошибке...

Form1.cs:
using static SDM_Lab5.PasMove;

namespace SDM_Lab5
{
    public partial class Form1 : Form
    {
        Aeroplane aero;
        Train tr;
        Avto av;
        public Form1()
        {
            InitializeComponent();

        }
        PasMove pm;
        
        Gorod[] towns; 
        string pathString = @"C:\Users\Miste\Desktop\Задания_СИ(шарп)\Лабораторные\ЛР_5\SDM_Lab5\SDM_Lab5\img";

        private void Form1_Load(object sender, EventArgs e)
        {
            aero = new Aeroplane(); // создаем экземпляры классов с начальными значениями
            tr = new Train();
            av = new Avto();
            towns = new Gorod[5]; // Задаем значения полей 
            towns[0] = new Gorod("Москва", 709, "Moscow.jpg");
            towns[1] = new Gorod("Рим", 3016, "Rome.jpg");
            towns[2] = new Gorod("Нью-Йорк", 6883, "New-york.jpg");
            towns[3] = new Gorod("Токио", 7598, "Tokyo.jpg");
            towns[4] = new Gorod("Лондон", 2818, "London.jpg");

            
            //  добавим поле Name из каждого объекта в выпадающий список          
            for (int i = 0; i < 5; i++)
            { comboBox1.Items.Add(towns[i].Name); }

        }
        int k;
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            k = comboBox1.SelectedIndex;
            // выводим расстояние до нужного города
            label1.Text = towns[k].ToString();
            // выводим соответствующую картинку          
            pictureBox1.Image = Image.FromFile(pathString + "\\" + towns[k].Url);

        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox2.Text == "")
            { MessageBox.Show("Не выбран транспорт!"); return; }
            Form2 frm2 = new Form2(pm);
            frm2.ShowDialog();
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (comboBox2.SelectedIndex)
            {
                case 0: pm = aero; break; // Ошибки здесь, у aero; tr; av
                case 1: pm = tr; break;
                case 2: pm = av; break;
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (comboBox1.Text == "" || comboBox2.Text == "")
            { MessageBox.Show("Не выбраны данные для расчета"); return; }
            else
            {
                double g = pm.Time(towns[k].Rast);
                double c = (pm.Equals(av)) ? pm.CostTrip(towns[k].Rast) : pm.CostTrip(g);
                label1.Text = string.Format("Стоимость поездки на 1 человека {0:f2} (без учета прочих сборов)", c);
            }

        }
    }
}


PasMove.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SDM_Lab5
{
    public class PasMove
    {
       
        public virtual int CountPas { get; set; }
        public virtual double Speed { get; set; }
        public string Name { get; set; }
        public double CostFuel { get; set; }
        public double Rashod { get; set; }
        public double Time(double s)
        { return s / Speed; }
        public virtual double CostTrip(double t)
        { return t * Rashod * CostFuel / CountPas; }

        public class Aeroplane
        {
            int countPas;
            double speed;

            public int CountPas
            {
                get { return countPas; }
                set { if (value <= 300) countPas = value; }
            }
            public double Speed
            {
                get => speed;
                set { if (value > 600 && value <= 900) speed = value; }
            }
            string Name;
            double CostFuel;
            double Rashod;
            public Aeroplane()
            {
                Name = "Самолет";
                CountPas = 280;
                Speed = 800;
                CostFuel = 37.2;
                Rashod = 2600;
            }

        }
        public class Train
        {
            int countPas;
            double speed;

            public int CountPas
            {
                get { return countPas; }
                set { if (value <= 300) countPas = value; }
            }
            public double Speed
            {
                get => speed;
                set { if (value > 600 && value <= 900) speed = value; }
            }
            string Name;
            double CostFuel;
            double Rashod;
            public Train()
            {
                Name = "Поезд";
                CountPas = 500;
                Speed = 80;
                CostFuel = 3.2;
                Rashod = 1600;

            }

        }
        public class Avto
        {
            int countPas;
            double speed;

            public int CountPas
            {
                get { return countPas; }
                set { if (value <= 300) countPas = value; }
            }
            public double Speed
            {
                get => speed;
                set { if (value > 600 && value <= 900) speed = value; }
            }
            double CostFuel;
            double Rashod;

            public virtual double CostTrip(double t) { return t / 100 * Rashod * CostFuel / CountPas;}
            string Name;
            public  Avto()
            {
                
                Name = "Автомобиль";
                CountPas = 3;
                Speed = 110;
                CostFuel = 3.2;
                Rashod = 1600;

            }
        }
    }
}


628cc57c46943979581608.png
Извините что всё так конкретно и всё сразу не могу найти решение уже 2 дня :(
  • Вопрос задан
  • 1573 просмотра
Решения вопроса 1
GavriKos
@GavriKos
Ну так а как оно должно одно в другое конвертить? Это совершенно разные классы, с разными полями, не имеющие ничего общего.

Выглядит как будто вы пытаетесь сделать наследование. Но его у вас нет. Вот когда появится - тогда все и заработает
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы