Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/64: Рейтинг темы: голосов - 64, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 39

Как сделать перегрузку метода ToString()

05.04.2015, 19:12. Показов 12504. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите сделать перегрузку метода ToString(), еще чтобы были готовые 3 пациента при запуске, и после занесения данных они не записываются а программа чего то ждет стоит, заранее спасибо!
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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace OOP
{
 
    class Hospital
    {
        class patient
        {
            string name; //имя
            string lastname; //фамилия
            string patronumic; // отчество
            Adress adress;//адресс
            Disease[] history;
            bool isStay;
 
            public patient(string _name, string _lastname, string _patronumic, Adress _adress) //конструктёр пациента
            {
                /* заносим данные в карточку*/
                name = _name;
                lastname = _lastname;
                patronumic = _patronumic;
                adress = _adress;
                isStay = true;
 
                history = new Disease[100]; // массив истории болезни пациента
            }
 
            public Adress Adress    // св-во Адрес
            {
                get { return adress; }  //только чтение
            }
 
            public string FIO //фио
            {
                get { return lastname + " " + name + " " + patronumic; } //только чтение
            }
 
            public bool IsStay    // стоит ли на учете больной
            {
                // чтение и запись
                get { return isStay; } // получение сведений об учете больного
                set { isStay = value; } //измемнение состояния учета
            }
 
            public void Visit(DateTime date, string diagnose) // обращение пациента в поликлиннику
            {
                Disease disease = new Disease(date, diagnose); // регистрируем болезнь
                history.SetValue(disease, history.Count()); // заносим в карточку
            }
        }
 
        string name; //наименование поликлинники
        static List<patient> my = new List<patient>();
 
        internal struct Adress
        {
            private string street;  //улица
            private string city; // город
            private byte house;  // номер дома
            private byte flat;  //# кваритры
 
            public Adress(string _street, string _city, byte _house, byte _flat)//конструктор структуры адреса
            {
                street = _street;
                city = _city;
                house = _house;
                flat = _flat;
            }
        }
 
        private struct Disease
        {
            DateTime time;
            string diagnose;
 
            public Disease(DateTime _time, string _diagnose)
            {
                time = _time;
                diagnose = _diagnose;
            }
        }
 
 
        public void Hospital1()  // конструктор больницы
        {
            name = "Поликлинника №1";   // задаем имя поликлинники
        }
 
        static void AddPatient(string name, string lastname, string patronymic, Adress adress) // регистрация пациента в больнице
        {
 
            patient Patient = new patient(name, lastname, patronymic, adress); // создаем карточку нового больного
            my.Add(Patient);// ложим ее в архив
        }
 
        public void SetStay(int ID, bool isStay) // снятие/постановка больного на учет в больницу
        {
            if ((ID < 0) || (ID > my.Count())) // если нет такого пациента, то ничего не делаем
                return;
 
            my[ID].IsStay = isStay; // снятие/постановка
        }
 
        static void Visit(int ID, DateTime date, string diagnose) // обращение пациента в больницу
        {
            if ((ID < 0) || (ID > my.Count())) // если нет такого пациента, то ничего не делаем
                return;
 
            my[ID].Visit(date, diagnose);
        }
 
        public static void Main()
        {
            char a;
 
            {
                System.Console.Clear();
                System.Console.WriteLine("\tБольница \n");
                System.Console.WriteLine("1. Добавить пациента");
                System.Console.WriteLine("2. Вывести список пациентов");
                System.Console.WriteLine("3. Удалить Пациента");
                System.Console.WriteLine("4. Обращение пациента");
                System.Console.WriteLine("5. постановка/снятие пациента с учета");
                System.Console.WriteLine("\n0. выход");
 
                a = System.Console.ReadKey().KeyChar;
                switch (a)
                {
                    case '1':
                        {
                            System.Console.Clear();
                            System.Console.WriteLine("Введите имя: ");
                            string name = Console.ReadLine();
                            System.Console.WriteLine("Введите фамилию: ");
                            string lastname = Console.ReadLine();
                            System.Console.WriteLine("Введите отчество: ");
                            string patronymic = Console.ReadLine();
                            System.Console.WriteLine("Введите адрес: \n");
                            System.Console.WriteLine("город: ");
                            string _city = Console.ReadLine();
                            System.Console.WriteLine("Улица: ");
                            string _street = Console.ReadLine();
                            System.Console.WriteLine("Дом: ");
                            byte _house = byte.Parse(Console.ReadLine());
                            System.Console.WriteLine("Квартира: ");
                            byte _flat = byte.Parse(Console.ReadLine());
                            Adress adress = new Adress(_street, _city, _house, _flat);
 
                            AddPatient(name, lastname, patronymic, adress);
                            break;
                        }
                    case '2':
                        {
                            for (int i = 0; i < my.Count; i++)
                            {
                                System.Console.Clear();
                                System.Console.WriteLine("ID: " + i);
                                System.Console.WriteLine("FIO: " + my[i].FIO);
                                System.Console.WriteLine("Учет: " + my[i].IsStay);
 
                            }
                            System.Console.ReadKey();
                            break;
                        }
                    case '3':
                        {
                            System.Console.Clear();
                            System.Console.WriteLine("Напишите номер записи которую хотите удалить: ");
                            int i = int.Parse(System.Console.ReadLine());
                            my.RemoveAt(i);
                        }
                        break;
                    case '4':
                        {
                            System.Console.Clear();
                            System.Console.WriteLine("Введите номер пациента: ");
                            int i = int.Parse(System.Console.ReadLine());
                            System.Console.WriteLine("Введите диагноз: ");
                            string s = System.Console.ReadLine();
                            Visit(i, DateTime.Today, s);
                        }
                        break;
                    case '5':
                        {
                            System.Console.Clear();
                            System.Console.WriteLine("Введите номер пациента: ");
                            int i = int.Parse(System.Console.ReadLine());
                            my[i].IsStay = !my[i].IsStay;
 
                        }
                        break;
                }
            } while (a != '0') ;
 
            
        }
 
 
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.04.2015, 19:12
Ответы с готовыми решениями:

Для чего делают перегрузку метода ToString()
Для чего делают перегрузку метода ToString() или других методов, и как она делаеться ?

Сделать перегрузку любого метода
необходимо сделать перегрузку любого метода using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Как тут делать перегрузку метода?
Можете обьяснить что от меня хотят? как тут делать перегрузку. Перегрузите метод f из предыдущего раздела так, чтобы его сигнатура...

10
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
05.04.2015, 19:19
Цитата Сообщение от Trekq Посмотреть сообщение
чтобы были готовые 3 пациента при запуске, и после занесения данных они не записываются а программа чего то ждет стоит
Первый раз не получилось задать вопрос, ничего, давай еще раз.
1
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 39
05.04.2015, 19:42  [ТС]
нужно что бы в программе были сразу записаны 3 пациента, и второе запускаешь программу заносишь имя фамилию отчество .... после последней записи ничего не происходит, в чем ошибка подскажите?

Добавлено через 15 секунд
Constantius24, так понятней?
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
05.04.2015, 19:54
Цитата Сообщение от Trekq Посмотреть сообщение
нужно что бы в программе были сразу записаны 3 пациента
Цитата Сообщение от Trekq Посмотреть сообщение
после последней записи ничего не происходит, в чем ошибка
C#
1
2
3
4
5
6
7
8
9
10
11
12
        public static void Main()
        {
            AddPatient("1", "1", "1", new Adress("1", "1", 1, 1)); // 1
            AddPatient("2", "2", "2", new Adress("2", "2", 2, 2)); // 2
            AddPatient("3", "3", "3", new Adress("3", "3", 3, 3)); // 3
 
            char a;
 
            do { // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                System.Console.Clear();
                System.Console.WriteLine("\tБольница \n");
                System.Console.WriteLine("1. Добавить пациента");
Добавлено через 2 минуты
Там еще ошибка при выводе списка, нужно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                    case '2':
                        {
                            Console.Clear();
                            for (int i = 0; i < my.Count; i++)
                            {
                                Console.WriteLine();
                                System.Console.WriteLine("ID: " + i);
                                System.Console.WriteLine("FIO: " + my[i].FIO);
                                System.Console.WriteLine("Учет: " + my[i].IsStay);
 
                            }
                            System.Console.ReadKey();
                            break;
                        }
1
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 39
05.04.2015, 20:07  [ТС]
Constantius24, Спасибо большое а с перегрузкой не поможете?
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
05.04.2015, 20:15
Лучший ответ Сообщение было отмечено Trekq как решение

Решение

Перегрузка метода ToString в структуре Adress:
C#
1
2
3
4
            public override string ToString()
            {
                return string.Format("Street: {0}, City: {1}, House: {2}, Flat: {3}", street, city, house, flat);
            }
Перегрузка метода ToString в классе patient:
C#
1
2
3
4
            public override string ToString()
            {
                return string.Format("Name: {0}, LastName: {1} {2}", name, lastname, adress.ToString());
            }
1
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 39
05.04.2015, 20:19  [ТС]
Constantius24, Спасибо большое очень помогли!!!
0
 Аватар для Atma24
6 / 6 / 4
Регистрация: 27.06.2013
Сообщений: 89
30.04.2015, 07:42
Всем здравствуйте.
У меня есть вопрос по поводу перегрузки ToString(). Как я понимаю все классы наследуются от базового класса Object и как раз этой перегрузкой мы делаем так что этот метод становится методом именно нашего класса.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace hm6_1_
{
    class Employee
    {
        string firstname;
        string lastname;
        DateTime acceptTime;
        string city;
        string sex;
        DateTime birthday;
        decimal salary;
        string profession;
        public DateTime Birthday
        {
            get 
            {
                return birthday;
            }
            set 
            {
                if (birthday < acceptTime) birthday = value;
            }
        }
        public Employee()
        {
            this.firstname = "Error";
            this.lastname = "Error";
            this.acceptTime = DateTime.Now;
            this.city = "Error";
            this.sex = "Error";
            this.birthday = DateTime.Now;
            this.salary = 0;
            this.profession = "Error";
        }
        public Employee(string firstname, string lastname, DateTime acceptTime, string city, string sex, decimal salary, string profession)
        {
            this.firstname = firstname;
            this.lastname = lastname;
            this.acceptTime = acceptTime;
            this.city = city;
            this.sex = sex;
            this.birthday = Birthday;
            this.salary = salary;
            this.profession = profession;
        
        }
 
        public override string Tostring()
        {
            return string.Format("{0} {1} {2} {3} {4} {5} {6} {7}", this.firstname, this.lastname, this.acceptTime, this.city, this.sex, Birthday, this.salary, this.profession);
 
        }
        public int getAge()
        {
            TimeSpan age = new TimeSpan();
            age = DateTime.Now - Birthday;
            
            return age.Days/365;
        }
    }
 
    
    class Program
    {
        static void Main(string[] args)
        {
            Employee emp = new Employee("Иванов", "Иван", new DateTime(2015,5,28,0,0,0), "Москва", "Мужской", 100000, "Программист");
            emp.Birthday = new DateTime(1984, 8, 15, 0, 0, 0);
 
            Console.WriteLine(Convert.ToInt32(emp.getAge()));
            emp.Tostring();
            Console.ReadKey();
        }
    }
}
В данном примере пытаюсь сделать перегрузку , но мне пишет:
"hm6_1_.Employee.Tostring()": не найден метод, пригодный для переопределения . Помогите пожалуйста. В чем тут дело не могу понять. (строка 53)
0
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
30.04.2015, 07:45
Atma24, ToString()
1
 Аватар для Atma24
6 / 6 / 4
Регистрация: 27.06.2013
Сообщений: 89
30.04.2015, 09:08
Забыл конечно Console.WriteLine(emp.ToString());
Все работает спасибо. Вот уверен был что как всегда какая то мелочь).

Добавлено через 1 час 9 минут
Я немного доработал программу с добавлением еще одного класса Сотрудники в котором работаю с обобщенной коллекцией. Ну и конечно не отходя от темы метода ToString() есть вопрос. Вот код.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace hm6_1_
{
    class Employee
    {
        string firstname;
        string lastname;
        DateTime acceptTime;
        string city;
        string sex;
        DateTime birthday;
        decimal salary;
        string profession;
        public DateTime Birthday
        {
            get 
            {
                return birthday;
            }
            set 
            {
                if (birthday < acceptTime) birthday = value;
            }
        }
        public Employee()
        {
            this.firstname = "Error";
            this.lastname = "Error";
            this.acceptTime = DateTime.Now;
            this.city = "Error";
            this.sex = "Error";
            this.birthday = DateTime.Now;
            this.salary = 0;
            this.profession = "Error";
        }
        public Employee(string firstname, string lastname, DateTime acceptTime, string city, string sex, decimal salary, string profession)
        {
            this.firstname = firstname;
            this.lastname = lastname;
            this.acceptTime = acceptTime;
            this.city = city;
            this.sex = sex;
            this.birthday = Birthday;
            this.salary = salary;
            this.profession = profession;
        
        }
 
        public override string ToString()
        {
            return string.Format(" {0}\n {1}\n {2}\n {3}\n {4}\n {5}\n {6}\n {7}", this.firstname, this.lastname, this.acceptTime, this.city, this.sex, Birthday, this.salary, this.profession);
 
        }
        public int getAge()
        {
            TimeSpan age = new TimeSpan();
            age = DateTime.Now - Birthday;
            
            return age.Days/365;
        }
    }
    class Employees
    {
        List<Employee> employees = new List<Employee>();
 
        public void add(Employee newEmp)
        {
            employees.Add(newEmp);
 
        }
 
        public void createEmp()
        {
            Employee crEmp = new Employee("Жукова", "Надежда", new DateTime(2010, 1, 2, 0, 0, 0), "Астрахань", "Женский", 200000, "Уборщица");
            employees.Add(crEmp);
 
        }
        public void show()
        {
            foreach (var item in employees)
            {
                //Console.WriteLine(Convert.ToString(item));
                Console.WriteLine(item);
            }
        
        }
 
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Employee emp = new Employee("Иванов", "Иван", new DateTime(2015,5,28,0,0,0), "Москва", "Мужской", 100000, "Программист");
            emp.Birthday = new DateTime(1984, 8, 15, 0, 0, 0);
            
            Console.WriteLine(Convert.ToInt32(emp.getAge()));
 
            Console.WriteLine("Вывод с помощью перегрузки ToString()\n");
            Console.WriteLine(emp.ToString());
 
            Console.WriteLine("Вывод пункт б\n");
            Employees employees = new Employees();
            employees.add(new Employee("Петорв", "Петр", new DateTime(2015,5,30,0,0,0), "Красноярск", "Мужской", 500000, "Менеджер"));
            employees.add(new Employee("Сидоров", "Сидор", new DateTime(2014, 3, 22, 0, 0, 0), "Ужур", "Мужской", 200000, "Плотник"));
            employees.add(new Employee("Салдатова", "Ирина", new DateTime(2010, 1, 2, 0, 0, 0), "Новосибирск", "Женский", 600000, "Бухгалтер"));
            employees.createEmp();
            employees.show();
 
            Console.ReadKey();
        }
    }
}
Если остановиться отладчиком на строке "public void show()" и получается что при скажем так обходе списка когда идет вывод на экран у нас отладчик прыгает на наш метод перегруженный метод ToString(). Я просто для себя хотел уяснить , и конечно же если я думаю не правильно поправьте пожалуйста. Так как в классе Employee есть перегруженный метод ToString() , то в момент вывода на экран элемента списка типа Employee в строковом виде C# уже понимает сам что нужно запускать именно этот метод ?. Если в первом случае мы сами его вызвали из Main это понятно , то сейчас как он сам вызвался?
Как мог мысль конечно свою написал. Подскажите пожалуйста, что это за чудо?)
Заранее спасибо.
0
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
30.04.2015, 10:02
Потому что при передачи объекта в консоль на него автоматически будет вызван ToString чтобы получить строковое представление для вывода
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2015, 10:02
Помогаю со студенческими работами здесь

Выручайте плз. Bitarray+Quene (или хоть перегрузку ToString () для quene)
Написать программу с работой класса BitArray с методом And и класса Queue с методами добавления и удаления элемента, и перегрузкой метода...

Переопределение метода ToString()
В общем есть Класс Text, у него я, пытаюсь, переопределить метод ToString(). Подскажите как можно переопределить метод так, чтобы туда...

Переопределение метода ToString у списка
Добрый день! Народ помогите плс... у _e есть методы, свойства и т.д. Возможно ли переопределить\добавить свой метод скажем ToString у...

Наследование метода toString() в производном классе
В главном классе определил метод toString(): /// &lt;summary&gt; /// вывод на экран значений /// &lt;/summary&gt; ...

Как сделать перегрузку операций
Здравствуйте. Не могли бы вы мне объяснить как сделать перегрузку операций в windows forms? Вот программа: using System; using...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru