Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 13
1

Полиморфизм. Неявное преобразование типа "string" в "zad22.iProcesor" невозможно

11.05.2018, 10:47. Показов 1749. Ответов 11

Author24 — интернет-сервис помощи студентам
Я абсолютный новичек, подскажите пожалуйста где здесь заковырка?
На 60 строке p.Procesor = "{3.3 GHz}"; ругается и выдает сообщение "Неявное преобразование типа "string" в "zad22.iProcesor" невозможно"



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace zad22
{
    public class iProcesor
    {
        private string _Moshnost;
        public string Moshnost
        {
            get { return _Moshnost; }
            set { _Moshnost = value; }
        }
        public override string //полиморфизм 
            ToString() { return "POWER :" + " " + _Moshnost; }
    }    
    public class SistBlok
    {
        public  iProcesor Procesor { get; set; }      
        private string _Marka;
        public string Marka
        {
            get { return _Marka; }
            set { _Marka = value; }
        }                   
        private string _Price;
        public string Price
        {
            get { return _Price; }
            set { _Price = value; }
        }
        public override string
            ToString() { return "PRICE :" + " " + _Price + " " + "LABEL :" + " " + _Marka + " "+"POWER :"+" "+Procesor+" "; }      
    }
    public class Monitor: SistBlok
    {
        private string _Razmer;
        public string Razmer
        {
            get { return _Razmer; }
            set { _Razmer = value; }
        }
        private string _Tip;
        public string Tip
        {
            get { return _Tip; }
            set { _Tip = value; }
        }
        public override string
            ToString() { return base.ToString() + "TYPE :" + " " + _Tip +" "+"SIZE :"+" "+ _Razmer; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            SistBlok p = new Monitor(); //п
            p.Procesor = "{3.3 GHz}";
            p.Marka = "{Intel}  ";
            p.Price = "{5 0000 $}  ";
            (p as Monitor).Tip = "{Lcd}  "; //п
            (p as Monitor).Razmer = "{16 : 9}"; //п
            Console.WriteLine(p);
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2018, 10:47
Ответы с готовыми решениями:

Неявное преобразование типа string[] в int невозможно
Ошибка 4-5 строка переменная z "неявное преобразование типа string в int невозможно". Помогите...

Что значит неявное преобразование типа string[] в char[] невозможно?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Неявное преобразование string в string[] невозможно
Хочу сохранить путь файлов которые ищет программа по названию в массив string dir; ...

Обобщения. Неявное преобразование типа невозможно
Вылетает ошибка: Неявное преобразование типа "T " в "T" невозможно. Почему так нельзя? ...

11
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
11.05.2018, 10:52 2
C#
1
p.Procesor.Moshnost = "{3.3 GHz}";
Для чего вы наследуете монитор, от системного блока? Монитор по вашему является системным блоком?
1
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 13
11.05.2018, 11:07  [ТС] 3
Добавлено через 3 минуты
Цитата Сообщение от Bespridelschic Посмотреть сообщение
Для чего вы наследуете монитор, от системного блока? Монитор по вашему является системным блоком?
Простите, не совсем понял сути вопроса, он относится к моей проблеме?
Добавил для того, что было легче, но проблема ведь не в этом.
0
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
11.05.2018, 11:10 4
Цитата Сообщение от vsbgtrv Посмотреть сообщение
Простите, не совсем понял сути вопроса, он относится к моей проблеме?
В текущем контексте - не относится. В перспективе - да. Наследование - это парадигма, при которой один тип, перенимает свойства другого типа. Как например класс Яблоко можно наследовать от класса Фрукт, или класс Менеджера от Работника. Т.е. Яблоко является фруктом, а менеджер является работником.

А в Вашем случае, это похоже на наследование фрукта от овоща, и менеджера от грузчика. Системный блок не является монитором, так же как и монитор не является системным блоком.
0
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 13
11.05.2018, 11:11  [ТС] 5
Цитата Сообщение от Bespridelschic Посмотреть сообщение
В текущем контексте - не относится. В перспективе - да. Наследование - это парадигма, при которой один тип, перенимает свойства другого типа. Как например класс Яблоко можно наследовать от класса Фрукт, или класс Менеджера от Работника. Т.е. Яблоко является фруктом, а менеджер является работником.
А в Вашем случае, это похоже на наследование фрукта от овоща, и менеджера от грузчика. Системный блок не является монитором, так же как и монитор не является системным блоком.
Вы знаете как мне помочь с моей проблемой?
0
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
11.05.2018, 11:12 6
Цитата Сообщение от vsbgtrv Посмотреть сообщение
Вы знаете как мне помочь с моей проблемой?
Цитата Сообщение от Bespridelschic Посмотреть сообщение
C#
1
p.Procesor.Moshnost = "{3.3 GHz}";
Это не помогло?
0
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 13
11.05.2018, 11:16  [ТС] 7
Цитата Сообщение от Bespridelschic Посмотреть сообщение
Это не помогло?
Хм, не понял что это была правка.
Изменил, но к сожалению в какой итог:
Полиморфизм. Неявное преобразование типа "string" в "zad22.iProcesor" невозможно


Сообщение:
Необработанное исключение: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в zad22.Program.Main(String[] args) в d:\!Универ\3 курс\ИТ\6 лаба\zad22\Program.cs:строка 60
Для продолжения нажмите любую клавишу . . .
0
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
11.05.2018, 11:17 8
Лучший ответ Сообщение было отмечено vsbgtrv как решение

Решение

Добавьте до обращения к полю p.Procesor.Moshnost:
C#
1
p.Procesor = new iProcesor();
1
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 13
11.05.2018, 11:21  [ТС] 9
Цитата Сообщение от Bespridelschic Посмотреть сообщение
Добавьте до обращения к полю p.Procesor.Moshnost:

Вот таким макаром?
C#
1
2
3
4
5
6
7
8
9
10
11
  static void Main(string[] args)
        {
            SistBlok p = new Monitor(); //п
            p.Procesor = new iProcesor
            p.Procesor.Moshnost = "{3.3 GHz}";
            p.Marka = "{Intel}  ";
            p.Price = "{5 0000 $}  ";
            (p as Monitor).Tip = "{Lcd}  "; //п
            (p as Monitor).Razmer = "{16 : 9}"; //п
            Console.WriteLine(p);
        }
0
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
11.05.2018, 11:22 10
Цитата Сообщение от vsbgtrv Посмотреть сообщение
Вот таким макаром?
Именно так
1
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 13
11.05.2018, 11:24  [ТС] 11
Цитата Сообщение от Bespridelschic Посмотреть сообщение
Именно так
Все сработало! Огромное вам спасибо!
0
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
11.05.2018, 11:26 12
Цитата Сообщение от vsbgtrv Посмотреть сообщение
Все сработало! Огромное вам спасибо!
Обращайтесь
1
11.05.2018, 11:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2018, 11:26
Помогаю со студенческими работами здесь

Неявное преобразование типа "string" в "bool" невозможно
неявное преобразование типа "string" в "bool" невозможно указывает на строку с условием: if...

Неявное преобразование типа "int" в "string" невозможно
При написании программы выдало ошибку, как ее исправить ??ошибка в строке 41 и 47 string text =...

Неявное преобразование типа "string" в "char" невозможно
>= и <=, пишет что неправильный тип, делал тип string, так же не работает, что не правильно? ...

Неявное преобразование типа "string" в "bool" невозможно
Вот такая строчка if (((FChoicePol)this.Tag).comboBox1.Text = "м")...

Неявное преобразование типа "string" в "char" невозможно
Неявное преобразование типа "string" в "char" невозможно (Char x = textBox2.Text;) Искал на форуме...

Как считать булевы значения: "Неявное преобразование типа "string" в "bool" невозможно"
Здравствуйте. Возник такой вопрос: а как считать булевы значения? Почему такой вариант выдает мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru