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

Ошибка в задаче по делегатам и событиям

09.04.2017, 14:50. Показов 916. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задача:

Создать класс Counter. Этот класс содержит метод CountTo(int countTo, int reachableNum) который начинает отсчет от 0 до countTo, и запускает событие NumberReached когда значение счета достигает reachableNum. Объявить и использовать делегаты и события.

Мое решение:
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
namespace ConsoleApplication1
{
 
    public delegate void NumberReachedEventHandler(object sender, NumberReachedEventArgs e);
 
 
    public class Counter
    {
 
        public event NumberReachedEventHandler NumberReached;
 
        public Counter()
        {
 
            //
 
            // TODO: Add constructor logic here
 
            //
 
        }
 
        public void CountTo(int countTo, int reachableNum)
        {
 
            if (countTo < reachableNum)
                throw new ArgumentException();
 
            for (int ctr = 0; ctr <= countTo; ctr++)
            {
                if (ctr == reachableNum)
                {
 
                    NumberReachedEventArgs e = new NumberReachedEventArgs(
 
                        reachableNum);
 
                    OnNumberReached(e);
 
                    return;//don’t count any more
 
                }
 
            }
 
        }
 
        protected virtual void OnNumberReached(NumberReachedEventArgs e)
        {
 
            if (NumberReached != null)
            {
 
                NumberReached(this, e);//Raise the event
 
            }
 
        }
 
    }
}

Что там не так? Почему не идет отладка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2017, 14:50
Ответы с готовыми решениями:

по делегатам
Написать метод, который принимает три параметра :первые два – целочисленные значения, третий...

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

Практические задания по классам, интерфейсам, делегатам
Здравствуйте! Изучил что такое классы/интерфейсы и делегаты. Вызубрил теорию) Теперь хотелось бы...

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

16
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
09.04.2017, 15:21 2
AliTour, если это весь код приложения, то не здесь не хвататет объявления класса NumberReachedEventHandler и функции Main.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 137
09.04.2017, 17:35  [ТС] 3
Насколько я знаю, NumberReachedEventHandler - делегат, который уже объявлен.

При попытке отладки выдает следующее:
C#
1
Ошибка 1 Не удалось найти имя типа или пространства имен "NumberReachedEventArgs" (пропущена директива using или ссылка на сборку?) c:\users\archi\documents\visual studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs    11 71 ConsoleApplication1
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
09.04.2017, 17:38 4
AliTour, я перепутал NumberReachedEventHandler и NumberReachedEventArgs - имел в виду именно последний. И ошибка компиляции - отладка здесь ни при чем - именно об этом и говорит.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 137
09.04.2017, 17:44  [ТС] 5
Допустим, я прописал класс:
C#
1
public class NumberReachedEventArgs {}
Но теперь выдает следующую ошибочку:
C#
1
Ошибка    1   "Test.Program.NumberReachedEventArgs" не содержит конструктор, который принимает аргументы "1"    c:\users\archi\documents\visual studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 42  48  ConsoleApplication1
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
09.04.2017, 18:01 6
AliTour, а) прочитай внимательно текст ошибки компиляции;
б) посмотри на строку где эта ошибка происходит;
в) сопоставь одно с другим и подумай что нужно исправить в классе NumberReachedEventArgs.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 137
10.04.2017, 17:56  [ТС] 7
А вы можете пожалуйста исправить мою ошибку в выше приведенном коде сами, а то вот ни как не получается?
0
Эксперт .NET
1696 / 1325 / 316
Регистрация: 15.06.2012
Сообщений: 5,045
Записей в блоге: 3
10.04.2017, 18:30 8
Цитата Сообщение от AliTour Посмотреть сообщение
а то вот ни как не получается?
выложите ваш NumberReachedEventArgs, точнее его конструктор принимающий int
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 137
10.04.2017, 18:35  [ТС] 9
Вот весь код:
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
namespace ConsoleApplication1
{
 
    public delegate void NumberReachedEventHandler(object sender, NumberReachedEventArgs e);
 
 
    public class Counter
    {
 
        public event NumberReachedEventHandler NumberReached;
 
        public Counter()
        {
 
            //
 
            // TODO: Add constructor logic here
 
            //
 
        }
 
        public void CountTo(int countTo, int reachableNum)
        {
 
            if (countTo < reachableNum)
                throw new ArgumentException();
 
            for (int ctr = 0; ctr <= countTo; ctr++)
            {
                if (ctr == reachableNum)
                {
 
                    NumberReachedEventArgs e = new NumberReachedEventArgs(
 
                        reachableNum);
 
                    OnNumberReached(e);
 
                    return;//don’t count any more
 
                }
 
            }
 
        }
 
        protected virtual void OnNumberReached(NumberReachedEventArgs e)
        {
 
            if (NumberReached != null)
            {
 
                NumberReached(this, e);//Raise the event
 
            }
 
        }
 
    }
}
0
Эксперт .NET
1696 / 1325 / 316
Регистрация: 15.06.2012
Сообщений: 5,045
Записей в блоге: 3
10.04.2017, 18:52 10
.delete

туплю. Он у вас тупо не создан (я думал просто нет нужного конструктора). Его какбы нужно добавить.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 137
10.04.2017, 18:56  [ТС] 11
Вот я создал нужный класс:
C#
1
public class NumberReachedEventArgs {}
А с конструктором можете помочь?
0
Tsin
10.04.2017, 19:21
  #12

Не по теме:

AliTour, работаете с делегатами и событиями, но не можете создать конструктор, принимающий один параметр..?
(-_-)

0
Эксперт .NET
1696 / 1325 / 316
Регистрация: 15.06.2012
Сообщений: 5,045
Записей в блоге: 3
10.04.2017, 19:31 13
Цитата Сообщение от AliTour Посмотреть сообщение
А с конструктором можете помочь?
могу
Использование конструкторов (Руководство по программированию на C#)
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
10.04.2017, 20:13 14
AliTour,
C#
1
2
3
4
5
6
7
8
public class NumberReachedEventArgs
{
    public int Number { get; private; set; }
    public NumberReachedEventArgs(int number)
    {
        Number = number;
    }
}
0
Diamante
10.04.2017, 20:48
  #15

Не по теме:

Цитата Сообщение от OwenGlendower Посмотреть сообщение
{ get; private; set; }
- казнить нельзя помиловать:)

0
OwenGlendower
10.04.2017, 20:49
  #16

Не по теме:

Diamante, случайно получилось :)

0
Wolfdp
10.04.2017, 23:13     Ошибка в задаче по делегатам и событиям
  #17

Не по теме:

OwenGlendower, ну вот, взял и сделал за человека всю работу, теперь он вообще ничему не научится XD

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2017, 23:13

Ошибка в задаче
Не могу понять почему не работает, помогите исправить ошибки. Вот условие: Напечатать в...

Ошибка в задаче
Условие: Организовать цепочку динамических структуры содержащую действительные числа и добавит с...

Ошибка в задаче
Задание написать функцию двух параметров, которая устанавливает должна ли первая фамилия...

Ошибка в задаче
Помогите найти ошибку в задании! static void CountNum(string s) { int k = 0;...


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

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