Рейтинг:
2
OriginalGriff
Измените свой конструктор: установите максимальный и минимальный уровни, прежде чем устанавливать свое значение.
В вашем текущем способе вы сначала устанавливаете значение, которое вызывает InRange, который проверяет его на соответствие Max и Min, которые вы еще не установили, - поэтому они по умолчанию равны нулю, и вы всегда будете проваливать тест, если только установленное вами значение также не равно нулю.
Grampy Cat
Вы очень хорошо это объясняете, но я все еще не до конца понимаю ... так что ... можете ли вы показать, что именно нужно изменить с помощью кусков кода?
OriginalGriff
Да ладно тебе!
Прочитайте то, что я сказал, Посмотрите на свой код, и если вам нужно, запустите его через отладчик - фактически сделайте это сначала: он покажет вам точно, что происходит с вашим кодом во время его выполнения. Вы должны быть в состоянии исправить это - вы написали оригинальный код, в конце концов, так что вы точно знаете, что он делает и что он должен делать!
Grampy Cat
Я просто не до конца понимаю свою ошибку и поэтому прошу вас о помощи. Я уже понял, что сначала у меня есть чек, а потом устанавливается значение, но ничего не происходит.
OriginalGriff
Буквально: прочитайте то, что я сказал, и подумайте о порядке, в котором все происходит; используйте отладчик, чтобы следить за вашим кодом, если вы не понимаете - он покажет вам, что именно происходит и когда.
Поместите точку останова в первую строку конструктора счетчика и запустите приложение в отладчике. Когда он достигнет точки останова, он остановится и позволит вам взять управление на себя. Шагайте через свой код строка за строкой и наблюдайте, что происходит с вашими переменными!
Да, я могу точно сказать тебе, что делать, и это будет намного быстрее для нас обоих, но ты ничего не узнаешь, поэтому в следующий раз повторишь ту же ошибку.
Попробуйте - это не сложно, и это важный навык для изучения.
Grampy Cat
На самом деле я из России и скажу, что сообщество этого форума гораздо добрее, чем российский форум. И что самое смешное, я только что узнал о точке останова ... За что вам огромное спасибо. Но теперь я перепробовал все, что могло прийти мне в голову, и не могли бы вы сказать мне, что нужно изменить.
Конечно, я еще постараюсь понять свою ошибку, но сейчас мне нужен результат ..
OriginalGriff
Если вы используете отладчик, он покажет вам.
Поместите точку останова в начало конструктора счетчика.
Когда вы нажмете точку останова, вы можете использовать мышь, чтобы навести курсор на переменные, и она покажет вам значения. И вы увидите, что _val, _min и _max имеют значения 5, 0 и 10 соответственно.
Теперь используйте "step into" из панели инструментов отладки или меню, чтобы войти в строку
Значение = _val;
Он установит "val" в значение 5, а затем вызовет InRange - шаг в это.
Сразу же он проверяет "val" против "max" и "min" - так что наведите курсор мыши на все три и посмотрите, каковы значения.
Что это такое? Что же будет дальше? (И почему тест заканчивается точкой с запятой?)
Почему они являются теми ценностями, которыми они являются?
Подумайте об этом минуту или две ...
Grampy Cat
Я понял, что с конструктором счетчика все в порядке, но почему там 0 во время проверки ..
OriginalGriff
Нет, не в порядке - в этом все дело.
Отладчик показывает вам, что "max" и "min" равны нулю, когда вы добираетесь до InRange, не так ли?
Почему ты так думаешь?
Grampy Cat
на самом деле, я понятия не имею, почему это происходит, но это так
Grampy Cat
Ну, логически говоря, InRange не видит значения 5 0 10, но почему?
OriginalGriff
Развитие не похоже на другие курсы: вы должны помнить некоторые вещи, да - но в основном это о том, как вы учитесь думать правильно (и в зависимости от того, где вы живете, даже учитесь думать в первый раз!)
Итак, используйте свои маленькие серые клетки: возьмите лист бумаги и создайте на нем три коробки. Обозначьте их "value", "min" и "max". Поставьте ноль в каждом из них.
Теперь вы будете компьютером: в частности, вы будете запускать код конструктора счетчика.
Итак, для начала добавьте три поля: "_val", "_min" и "_max" - дайте им значения, которые вы передаете конструктору: 5, 0 и 10 соответственно.
Выполнение первой инструкции:
Значение = _val;
Для этого вам нужно будет "ввести" код задатчика значений, но следуйте ему, меняя содержимое коробки по ходу дела.
Что, по-вашему, происходит?
Серьезно, попробуй.
phil.o
public Counter(int _val, int _min, int _max)
{
min = _min;
max = _max;
Value = _val;
}
ОГ означает, что: с момента установки
Value
свойство внутренне вызывает
InRange()
метод, то вы должны установить минимальное и максимальное значения
до установка самого значения; в противном случае и минимум, и максимум будут равны нулю, и ваш конструктор не будет принимать никакого другого значения, кроме нуля.
Кроме того, вы должны иметь представление о том, что такое отладка; это позволит вам лучше понять, что делает ваш код, исследуя его состояние шаг за шагом.
Учебник: научитесь отлаживать код C# с помощью Visual Studio
Рейтинг:
0
phil.o
Получить Class1
класс вне игры Counter
класс.
Grampy Cat
Но правильно ли написан класс 1? Потому что как была ошибка, так она и осталась.
phil.o
Какая ошибка?
И я вижу очевидный недостаток: вы не проверяете, правильно ли упорядочены границы при создании.
Grampy Cat
"Исключение не обработано" - это нормально?
phil.o
Нет. Нам нужно было бы знать точный тип исключения, а также темп в коде, где это происходит.
Grampy Cat
О СРИ, а как это исправить?
Grampy Cat
О боже, я понимаю, Спасибо.
Черт возьми, ребята, спасибо Вам большое за помощь. Вы были добры ко мне, несмотря на то, что я все еще тот нуб в этой теме. А теперь по-русски)))
Спасибо вам ребят, теперь я стану русским хакером и буду сам решать кто станет будущим президентом США. Но на сам деле это шутка, все равно вам огромное спасибо)))