С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
9 / 9 / 8
Регистрация: 03.07.2015
Сообщений: 219

Ход выполнения программы

22.10.2016, 18:04. Показов 2203. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан следующий код:
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
using System;
class Number {
        private int Y;
        public int getY(){
            return Y;
        }
        int X {
            get { Console.WriteLine("G"); return Y - 2; }
            set { Console.WriteLine("S"); Y += value * 2; }
        }
        Number(int x) {
            Console.WriteLine("C");
            this.X = x;
            Console.WriteLine("C");
        }
        public static Number operator +(Number x, Number y) {
            Console.WriteLine("start");
            Number a = new Number(x.X);
            a.X += y.X + 3;
            Console.WriteLine("finish");
            return a;
        }
        public static implicit operator Number(int x) {
            Console.WriteLine("A");
            return new Number(x - 3);
        }
        public override String ToString() {
            return (this + 1).X.ToString();
        }
}
public class Program
{
    public static void Main()
    {
        Number x = 5;
        Console.WriteLine("##############");
        Console.WriteLine("{0}",x);
        Console.WriteLine("##############");        
    }
}
Результат работы программы:

A
C
S
C
##############
A
C
S
C
start
G
C
S
C
G
G
S
finish
G
0
##############

Первые пять строк, которые выводятся на экран, мне абсолютно понятны, т.е. мне понятно почему так происходит. Вот эти 5 строк:

A
C
S
C
##############

Т.е. это результат работы 2-ух следующих строк:
C#
1
2
                Number x = 5;
        Console.WriteLine("##############");
Дальнейший вывод на экран:
A
C
S
C

Тоже понятен. Это результат работы кода
C#
1
(this + 1)
. Т.е. происходит неявное преобразование между пользовательским типом и типом инт в данном случае. На место
C#
1
(this + 1)
возвращается объект типа Number и получается что-то такое если я не ошибаюсь
C#
1
InstanceOfClassNumber.X.ToString();
Почему программа далее выводит на экран start, т.е. вызывается метод перегружающий оператор +, для меня не понятно?????? Собственно в этом и был мой вопрос.
Спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2016, 18:04
Ответы с готовыми решениями:

Как увидеть ход программы?
Приветствую, есть написанная программа, компилируется, относительно работает. Работает не так, как нужно, на определенных шагах уже вижу...

Время выполнения программы
Подскажите пожалуйста как на C# определить за какое время выполнилась программа... функция какая нибудь есть? типо clock() в си

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

1
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,095
22.10.2016, 18:12
Цитата Сообщение от Aliaxandr Посмотреть сообщение
т.е. вызывается метод перегружающий оператор +, для меня не понятно
this + 1 >> this + (Number)1
этот + и обрабатывается
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2016, 18:12
Помогаю со студенческими работами здесь

Задержка выполнения программы
Рисую визуализацию выполнения алгоритмов сортировки на picturebox-е, требуется рисовать разные изображения через паузу. При использовании...

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

Скорость выполнения программы
Здравствуйте! У меня такой вопрос: у меня есть программа, которая запускает некий метод по таймеру. Подскажите скорость выполнения...

Задержка выполнения программы
Вот код: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; ...

Определить время выполнения программы
Вот задание Вот написал код using System; using System.Threading; namespace ConsoleApplication1 { class Program


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru