Будет ли C # существовать для меня?

2

По какой-то причине if (false), похоже, действительно работает. Вызов ReferenceEquals присутствует в качестве дополнительного теста. До того, как он был просто user == null, который вышел как false, но все же инструкция if еще предшествует..

[ОБНОВЛЕНИЕ] Это среда SharePoint/ASP.Net, поэтому да, это многопоточность. Однако ни один из написанных мной кодов не выполняет потоковую обработку. Это достаточно простой результат вызова в булевом типе, который, как представляется, выглядит как false. Я попробовал чистое решение, перезапустив среду разработки, перезапустив машину. Я не могу найти никаких доказательств того, что код в отладчике отличается от того, что выполняется.

[Примечание] Код не очень хорош, поскольку я немного взломал его, чтобы попробовать разные вещи и выяснить, почему это происходит немного неправильно. Не держите плохой код против меня. Например, userFound действительно должен быть назван userNotFound

alt text http://img228.imageshack.us/img228/6869/snippit.png

  • 2
    Это вопрос? Попробуйте опубликовать код вместо нечитаемого скриншота VS
  • 0
    Я вижу это так ясно.
Показать ещё 12 комментариев
Теги:

6 ответов

18

Попробуйте сделать чистую сборку? Возможно, код в IDE точно не соответствует отлаживаемому коду.

  • 0
    Это случилось со мной раньше с SharePoint, но я не могу найти никаких доказательств того, что он делает это на этот раз.
  • 0
    Я думаю, что может быть старая версия кода в одном из мест кэширования ASP.NET?
Показать ещё 1 комментарий
5

Я не знаю, почему вы получаете этот странный результат. Но код выглядит неправильно. "userFound" имеет значение true, если "userObject" имеет значение null? Разумеется, пользователь найден, если пользовательский объект не является нулевым.

Остальная часть видимого кода предполагает, что "userFound == true" на самом деле означает, что "пользователь также не был найден".

Этот код будет намного менее запутанным, если вы переименуете переменную "userIsMissing".

  • 0
    то, на что вы указываете, является артефактом того, что я взломал это, чтобы попробовать разные вещи. Это изначально читал!
  • 1
    Это сильно говорит о том, что у вас есть старый двоичный файл в памяти!
Показать ещё 1 комментарий
0

Просто из любопытства вы попробовали распечатать значение логического? Печать на консоль или запись на страницу, что угодно.

Иногда волшебное вуду происходит, но значения печати всегда помогают мне.

Отладчики удобны, но я не всегда им доверяю.

  • 0
    У вас есть точка зрения, но я знаю, что bool является ложным, как говорит отладчик. Вызов ReferenceEquals будет ложным, потому что userObject не будет нулевым.
0

Это сайт SharePoint. Он запускает ASP.NET. Он многопоточный. Вы уверены, что ваш запрос является единственным?

Это сборка Release или сборка Debug? Нужно ли я разрабатывать?

  • 0
    SS показывает отладку в конфигурации проекта. Я не знаю много о sharepoint и asp.net, но вы это подразумеваете под отладкой?
  • 0
    Нет, я имел в виду, это сборка кода в режиме отладки. Конфигурация, на которую вы ссылаетесь, не гарантирует, что код, который мы видим, был построен в режиме отладки.
Показать ещё 2 комментария
0

Удалите dll и pdb из папок bin/debug, перекомпилируйте и повторите попытку.

  • 0
    Я попробовал это. Я также удалил сборку из GAC и выполнил iisreset, чтобы убедиться, что не будет старых копий, которые можно обойти
0

Вы делаете какой-то поток. также я не помню правильно, но может быть, что код, который вы отлаживаете, устарел, сравнивается с тем, который вы видите в редакторе кода?

попробуйте отрицать найденный пользователь и посмотреть, является ли поведение противоположным, если в коде есть что-то, если нет там что-то с визуальной студией, т.е. С# происходит экзистенциально на вас

Ещё вопросы

Сообщество Overcoder
Наверх
Меню