Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 1
Регистрация: 28.03.2018
Сообщений: 58

Как использовать переменную?

24.04.2018, 21:04. Показов 2369. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня в главном классе создан метод virtual, в классах наследниках, он переопределяется. Так вот, мне нужно из классов наследников взять значение переменных, которые находятся в методе override. Я создаю объекты классов наследников, но мне нужно ввести аргументы и тут я не знаю что делать. Вот весь код:
Кликните здесь для просмотра всего текста
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using help3;
 
namespace help3
{
    
    public class Katalog
    {
        public string Type { get; set; }
        public string Model { get; set; }
        public string Firm { get; set; }
        public string Diagonal { get; set; }
        public int Tv_tuner { get; set; }
        public string Resolution { get; set; }
        public string Type_matrix { get; set; }
        public string Type_sensor { get; set; } //Sensor
        public string Amount_hdd { get; set; } //Sensor
 
        public virtual int Price()
        {
            int value = 0;
            return value;
        }
    }
        public class LCD : Katalog
        {
            public int value { get; set; }
            public LCD(string Type, string Model, string Firm, string Diagonal, int Tv_Tuner, string Resolution, string Type_matrix, int value)
            {
                this.Type = Type;
                this.Model = Model;
                this.Firm = Firm;
                this.Diagonal = Diagonal;
                this.Tv_tuner = Tv_tuner;
                this.Resolution = Resolution;
                this.Type_matrix = Type_matrix;
                this.value = value;
            }
            public LCD(string l)
            {
                string[] split = l.Split(new Char[] { '*' });
                Model = split[0].Trim();
                Firm = split[1].Trim();
                Diagonal = split[2].Trim();
                Tv_tuner = int.Parse(split[3].Trim());
                Resolution = split[4].Trim();
                Type_matrix = split[5].Trim();
                value = int.Parse(split[6].Trim());
            }
 
        public override string ToString()
            {
                return String.Format("Модель {0}\nФирма {1}\nДиагональ {2}\nРазрешение {3}\nТип матрицы {4}\nСтоимость {5} гривны\n", Model, Firm, Diagonal, Resolution, Type_matrix, value);
            }
            public override int Price()
            {
                    value = (value + Tv_tuner) - (value * 5 / 100);
                    return value;
            }
    }
        public class Sensor : Katalog
        {
 
        public Sensor(string Type, string Model, string Firm, string Diagonal, int Tv_Tuner, string Resolution, string Type_sensor, string Amount_hdd)
        {
            this.Type = Type;
            this.Model = Model;
            this.Firm = Firm;
            this.Diagonal = Diagonal;
            this.Resolution = Resolution;
            this.Type_sensor = Type_sensor;
            this.Amount_hdd = Amount_hdd;
        }
 
        public int value { get; set; }
 
        public Sensor(string l)
        {
            
            string[] split = l.Split(new Char[] { '*' });
            Model = split[0].Trim();
            Firm = split[1].Trim();
            Diagonal = split[2].Trim();
            Resolution = split[3].Trim();
            Type_sensor = split[4].Trim();
            Amount_hdd = split[5].Trim();
            value = int.Parse(split[6].Trim());
        }
 
        public override string ToString()
        {
            
            return String.Format("Модель {0}\nФирма {1}\nДиагональ {2}\nРазрешение {3}\nOбъем HDD {4}\nТип сенсора {5}\nСтоимость {6} гривны\n", Model, Firm, Diagonal, Resolution, Amount_hdd, Type_sensor, value);
        }
        public override int Price()
        {
                value = ((value * 3 / 100) * 12 + value) / 12;
                return value;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            void CreateList()
            {
                StreamReader file = new StreamReader("Katalog.txt");
                List<LCD> Katalog_LCD = new List<LCD>();
                List<Sensor> Katalog_Sensor = new List<Sensor>();
 
                string line;
                while ((line = file.ReadLine()) != null)
                {
                    if (line.EndsWith("*"))
                    { Katalog_LCD.Add(new LCD(line)); }
                    else
                    { Katalog_Sensor.Add(new Sensor(line)); }
                }
 
                foreach (LCD a in Katalog_LCD)
                {
                    Console.WriteLine(a);
                }
                foreach (Sensor b in Katalog_Sensor)
                {
                    Console.WriteLine(b);
                }
            }
            CreateList();
 
 
 
            //Программа
                LCD L = new LCD();
                Sensor S = new Sensor();
 
                Console.WriteLine("Какой монитор вы желаете приобрести 1.LCD или 2.Сенсорный?");
                string buy;
                while (true)//Цикл для правильного ввода названия мониторов
                {
                    buy = Console.ReadLine();
                    if (buy == "1" || buy == "2") break;
                    else Console.WriteLine("Пожалуйста введите правильное название");
                }
                switch (buy)
                {
                    case "1":
                        Console.WriteLine("Желаете приопрести ТВ-тюнер всего за 299 гривен и получить скидку 5% на всю сумму покупки?");
                        string tv_tuner = Console.ReadLine();
                        if (tv_tuner == "+")
                        {
                            L.Price();
                            Console.WriteLine("Вы купили LCD монитор и ТВ-тюнер.\nСумма к оплате сo скидкой 5% {0} гривен.", L.value);
 
                        }
                        else if (tv_tuner == "-")
                        {
                            Console.WriteLine("Вы купили LCD монитор.\nСумма к оплате {0} гривен.", L.value);
                        }
                        break;
 
                    case "2":
                        Console.WriteLine("Желаете взять кредит на 12 месяцев?");
                        string kredit = Console.ReadLine();
                        if (kredit == "+")
                        {
                            Console.WriteLine("Вы взяли кредит, суммой {0} гривен, на 12 месяцев, под 3%.", S.value);
                            S.Price();
                            Console.WriteLine("Ежемесячная сумма погашения кредита, составляет {0} гривен.", S.value);
                        }
                        else if (kredit == "-")
                        {
                            Console.WriteLine("Вы купили сенсорный монитор. Сумма к оплате {0} гривен.", S.value);
                        }
                        break;
                }
            Console.ReadLine();
        }
    }
}


Создание метода:

Переопределение метода в классах наследниках:

Создание объектов:
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2018, 21:04
Ответы с готовыми решениями:

Как использовать переменную из другого метода?
Есть метод public static void Put() { string put = Console.ReadLine(); if (put == &quot;default&quot;) put =...

Как использовать переменную типа BigInteger
// ???? Как её использовать, если она есть // Console.WriteLine(sizeof(BigInteger));

Как использовать переменную в нескольких методах
у меня есть несколько кнопок разные просчеты на каждой из них но есть потребность получить переменную с одного просчета для того чтобы...

25
1 / 1 / 1
Регистрация: 28.03.2018
Сообщений: 58
26.04.2018, 17:32  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Toros1992 Посмотреть сообщение
Вы понимаете, что по сути value и Price() есть одно и то же. Только value это локальная переменная внутри price, доступ к которой из вне получить невозможно. А доступ к price получить вполне можно, он и будет вам возвращать то пресловутое value. Только прайсу для этого нужны значения, которые передаются в констор класа. Следовательно используя конструктор без параметров, получить что-то из price нельзя
Переменная значения получает с файла.
Создание файла:
C#
1
2
3
4
5
6
7
8
9
10
11
12
            StreamReader file = new StreamReader("Katalog.txt");
            List<LCD> Katalog_LCD = new List<LCD>();
            List<Sensor> Katalog_Sensor = new List<Sensor>();
            
            string line;
            while ((line = file.ReadLine()) != null)
            {
                if (line.EndsWith("*"))
                { Katalog_LCD.Add(new LCD(line)); }
                else
                { Katalog_Sensor.Add(new Sensor(line)); }
            }
Присвоение данным файла к переменным через массив:
C#
1
2
3
4
5
6
7
8
9
10
11
        public Sensor(string l)
        {
            string[] split = l.Split(new Char[] { '*' });
            Model = split[0].Trim();
            Firm = split[1].Trim();
            Diagonal = split[2].Trim();
            Resolution = split[3].Trim();
            Type_sensor = split[4].Trim();
            Amount_hdd = split[5].Trim();
            value = int.Parse(split[6].Trim());
        }
Вот я попробовал запустить метод Price()
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
26.04.2018, 18:35
l_Nort_l, я прошу прощение а ты не пробовал приводить value к конкретному типу?
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,762
Записей в блоге: 2
26.04.2018, 18:40
Этот метод надо использовать через точечную аннотацию. Это метод экземпляра.
C#
1
2
3
String fromFile = //что-то пришло из файла
LCD L = new LCD(fromFile);
L.Price(); //вот как надо его вызывать
1
1 / 1 / 1
Регистрация: 28.03.2018
Сообщений: 58
26.04.2018, 20:32  [ТС]
Цитата Сообщение от Toros1992 Посмотреть сообщение
Этот метод надо использовать через точечную аннотацию. Это метод экземпляра.
C#
1
2
3
String fromFile = //что-то пришло из файла
LCD L = new LCD(fromFile);
L.Price(); //вот как надо его вызывать
Да, я так вызывал, пока не сделал такой вывод файла
C#
1
2
3
4
5
6
7
8
            string line;
            while ((line = file.ReadLine()) != null)
            {
                if (line.EndsWith("*"))
                { Katalog_LCD.Add(new LCD(line)); }
                else
                { Katalog_Sensor.Add(new Sensor(line)); }
            }
У меня начала появляться ошибка в массиве, а когда я удалил имя файла из аргументов, то ошибка пропала

Добавлено через 1 минуту
Цитата Сообщение от Esso11 Посмотреть сообщение
l_Nort_l, я прошу прощение а ты не пробовал приводить value к конкретному типу?
Я же весь код приложил, там всё есть. Я конечно конвертировал переменную, ибо оно мне ошибку вибивало бы
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,762
Записей в блоге: 2
26.04.2018, 20:38
Лучший ответ Сообщение было отмечено l_Nort_l как решение

Решение

C#
1
Katalog_LCD[0].Price();
1
1 / 1 / 1
Регистрация: 28.03.2018
Сообщений: 58
26.04.2018, 21:45  [ТС]
Цитата Сообщение от Toros1992 Посмотреть сообщение
C#
1
Katalog_LCD[0].Price();
Да, спасибо, работает.
Так же нашел такой способ, может кому поможет(Фото)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2018, 21:45

Как использовать переменную за пределами области видимости?
у меня есть лист находящийся в using, можно ли как то ее увидить за пределами этой области в мейне?

Как повторно использовать переменную, которая находится в try/catch
Столкнулся со следующей проблемой. Мне нужно повторно использовать переменную которая находиться внутри конструкции try/catch за ее...

Как использовать в проекте локальную переменную, измененную в цикле
Всем привет. Есть цикл foreach в нем формируется локальная переменная resalt, мне надо дальше работать с этой переменной но не...

Как сохранить путь к файла в переменную и использовать её во встроенных функциях?
Проблема следующая через FolderBrowserDialog нахожу путь к нужному каталогу,сохраняю путь в текстбокс, получается путь ,например...

Как использовать одну переменную в двух или больше функциях?
У меня есть функция void в которой у меня исполняются некоторые операторы, работающие с рандомом в цикле for и все это украшается текстом...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru