По какой-то причине if (false), похоже, действительно работает. Вызов ReferenceEquals присутствует в качестве дополнительного теста. До того, как он был просто user == null, который вышел как false, но все же инструкция if еще предшествует..
[ОБНОВЛЕНИЕ] Это среда SharePoint/ASP.Net, поэтому да, это многопоточность. Однако ни один из написанных мной кодов не выполняет потоковую обработку. Это достаточно простой результат вызова в булевом типе, который, как представляется, выглядит как false. Я попробовал чистое решение, перезапустив среду разработки, перезапустив машину. Я не могу найти никаких доказательств того, что код в отладчике отличается от того, что выполняется.
[Примечание] Код не очень хорош, поскольку я немного взломал его, чтобы попробовать разные вещи и выяснить, почему это происходит немного неправильно. Не держите плохой код против меня. Например, userFound действительно должен быть назван userNotFound
alt text http://img228.imageshack.us/img228/6869/snippit.png
Попробуйте сделать чистую сборку? Возможно, код в IDE точно не соответствует отлаживаемому коду.
Я не знаю, почему вы получаете этот странный результат. Но код выглядит неправильно. "userFound" имеет значение true, если "userObject" имеет значение null? Разумеется, пользователь найден, если пользовательский объект не является нулевым.
Остальная часть видимого кода предполагает, что "userFound == true" на самом деле означает, что "пользователь также не был найден".
Этот код будет намного менее запутанным, если вы переименуете переменную "userIsMissing".
Просто из любопытства вы попробовали распечатать значение логического? Печать на консоль или запись на страницу, что угодно.
Иногда волшебное вуду происходит, но значения печати всегда помогают мне.
Отладчики удобны, но я не всегда им доверяю.
Это сайт SharePoint. Он запускает ASP.NET. Он многопоточный. Вы уверены, что ваш запрос является единственным?
Это сборка Release или сборка Debug? Нужно ли я разрабатывать?
Удалите dll и pdb из папок bin/debug, перекомпилируйте и повторите попытку.
Вы делаете какой-то поток. также я не помню правильно, но может быть, что код, который вы отлаживаете, устарел, сравнивается с тем, который вы видите в редакторе кода?
попробуйте отрицать найденный пользователь и посмотреть, является ли поведение противоположным, если в коде есть что-то, если нет там что-то с визуальной студией, т.е. С# происходит экзистенциально на вас