|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Коллеги, утро доброе. Не могу понять, почему происходят следующие необъяснимые явления. Есть код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Записи в БД по ИД = id нету, когда отладкой прохожу по коду, то попадаю в return false в блоке if, а затем сразу в return true. Если блок if обернуть в фигурные скобки, то попадаю только в return true. Почему такое происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 10:34 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Супер_Пав Почему такое происходит? Потому что надо писать скобки. А твои лестницы на небеса без скобок разобрать ведь невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 10:47 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
fkthat Потому что надо писать скобки. А твои лестницы на небеса без скобок разобрать ведь невозможно. Впрочем, поведение немного похоже на выполнение двух параллельных потоков. Тогда в отладке можешь получить останов в том же методе, но из другого потока ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:02 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Shocker.Pro fkthat Потому что надо писать скобки. А твои лестницы на небеса без скобок разобрать ведь невозможно. Впрочем, поведение немного похоже на выполнение двух параллельных потоков. Тогда в отладке можешь получить останов в том же методе, но из другого потока это по словам свидетеля, пусть он бы сначал объяснил, например, смысл написанного: "Записи в БД по ИД = id нету, когда отладкой прохожу по коду, то попадаю в return false в блоке if, а затем сразу в return true. Если блок if обернуть в фигурные скобки, то попадаю только в return true. Почему такое происходит?" о какой записи речь? чего он ждет от приведенного кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:13 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Ролг Хупин о какой записи речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:14 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
fkthat Супер_Пав Почему такое происходит? Потому что надо писать скобки. А твои лестницы на небеса без скобок разобрать ведь невозможно. кто сказал, что надо? Когда в блоке выполняется 1 оператор, я никогда не пишу скобки...за редким исключением, например, когда создаю экземпляр класса с множеством св-в. Тогда да, чтобы код был более читабельным, добавляю скобки ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:42 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Shocker.Pro fkthat Потому что надо писать скобки. А твои лестницы на небеса без скобок разобрать ведь невозможно. Впрочем, поведение немного похоже на выполнение двух параллельных потоков. Тогда в отладке можешь получить останов в том же методе, но из другого потока Потоков нет, точнее есть, данные грузятся во вторичном потоке, но он один, кто выполняет приведенный код - это железно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:43 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Ролг Хупин Shocker.Pro пропущено... при любом раскладе, как ты объяснишь выполнение двух return в одном методе (без делегатов и локальных функций) Впрочем, поведение немного похоже на выполнение двух параллельных потоков. Тогда в отладке можешь получить останов в том же методе, но из другого потока это по словам свидетеля, пусть он бы сначал объяснил, например, смысл написанного: "Записи в БД по ИД = id нету, когда отладкой прохожу по коду, то попадаю в return false в блоке if, а затем сразу в return true. Если блок if обернуть в фигурные скобки, то попадаю только в return true. Почему такое происходит?" о какой записи речь? чего он ждет от приведенного кода? у меня выполняется небольшой Select, выборка по id. Результатов всегда 2: нет записи, либо есть запись с числом в поле, которое я вытаскиваю. В данном случае записей нет, reader.Read() не должен отрабатывать. Но каким-то образом проходят аж 2 условия сразу. Просто, когда запись есть, я сперва попадаю в return false, а потом в return true. Фигурные скобки решают проблему, но почему, я не пойму... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:46 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Супер_Пав Потоков нет, точнее есть, данные грузятся во вторичном потоке, но он один, кто выполняет приведенный код - это железно. Чудес не бывает. Если вставить в самом начале кода System.Diagnostics.Debug.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId); что получиться в Output? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:05 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Shocker.Pro при любом раскладе, как ты объяснишь выполнение двух return в одном методе (без делегатов и локальных функций) Метод дважды извне вызывается с разными условиями. ТС не объясняет ведь что он имеет в виду под "попадает". Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Поставить на обоих ретурнах точки останова и после остановки на первом сделать "Continue" - вот и попадешь сразу на вторую. А вообще, отладка для лохов. Правильные пацаны давно пишут юнит-тесты. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:13 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
fkthat А вообще, отладка для лохов. Правильные пацаны давно пишут юнит-тесты. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:18 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
LR Супер_Пав Потоков нет, точнее есть, данные грузятся во вторичном потоке, но он один, кто выполняет приведенный код - это железно. Чудес не бывает. Если вставить в самом начале кода System.Diagnostics.Debug.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId); что получиться в Output? Один раз выводит ИД потока (10). Вот скрин сделал, видно, что reader.Read() ничего не прочитал ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:19 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
в общем, по ходу глюк студии. Если брейкпоинт поставить на 2х ретёрнах, то return false не срабатывает. Если пошагово проходить, то срабатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:22 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
ты лучше точку останова на return false поставь скорее всего туда не попадет ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:23 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
у тебя оптимизация кода не включена часом? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:23 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Shocker.Pro ты лучше точку останова на return false поставь скорее всего туда не попадет чуть выше написал, что так и сделал. Не попадает. Не, не включал ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:27 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Супер_Пав в общем, по ходу глюк студии Если добавишь скобки, у тебя следующий шаг после проверки на скобке? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:29 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Shocker.Pro Супер_Пав в общем, по ходу глюк студии Если добавишь скобки, у тебя следующий шаг после проверки на скобке? да, со скобками проверка не проходит и сл шаг на return true. Но это ооочень странно. Скобки ведь необязательны в данном случае ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:52 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
я не про это спрашиваю останавливается ли отладчик при пошаговой отладке на скобке (при наличии скобки)? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:58 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Shocker.Pro я не про это спрашиваю останавливается ли отладчик при пошаговой отладке на скобке (при наличии скобки)? да ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:05 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Супер_Пав Shocker.Pro я не про это спрашиваю останавливается ли отладчик при пошаговой отладке на скобке (при наличии скобки)? да Вообще, в многоэтажных конструкциях скобки стараются писать, потому что Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:19 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Shocker.Pro Вообще, в многоэтажных конструкциях скобки стараются писать, потому что Ну, лично у нас положено вообще их всегда писать. Потому что. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:28 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Есть места, где они реально загромоздят код, например проверка входных параметров Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:41 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Shocker.Pro Есть места, где они реально загромоздят код, например проверка входных параметров Я бы с этим согласился, но, тут есть одна ловушка - кто-то их не ставит, потому что "код загромождает" а другой ставит, потому что ему так лучше читается, а потом в пятницу после работы набухались - и вот тебе и драка По мне так лучше, если ставить их где-либо (а где-либо их по-любому поставить придется), то ставить их тогда везде, а не решать каждый раз этот вопрос отдельно. К тому же, лично мне, так проще, чтобы не морочить всякий раз себе голову думой "а ставить ли мне тут скобки или нет". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:35 |
|
Странное поведение программы
|
|||
---|---|---|---|
#18+
Лень искать ошибку, но надо так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Хотя, разумеется, лучше проверять такие штуки непосредственно запросом к базе ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 22:55 |
|
|
start [/forum/topic.php?fid=20&fpage=14&tid=1398698]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 158ms |
0 / 0 |