Почему приведение всегда возвращает ноль только при отладке в VS2010? - PullRequest
5 голосов
/ 20 октября 2010

Только на моей машине такое бывает.В основном, если я запускаю следующее все, как и ожидалось:

        double d = 500.22;
        int i = (int)d;
        Console.WriteLine(i.ToString());

Выходное значение равно 500.

Однако, если я ставлю точку останова на первую строку и шаг за шагом, я всегда возвращаюсь к нулювывод равен 0.

Я проверил это на других машинах, и я не могу воспроизвести, я даже переустановил VS2010, и это все еще происходит.Поэтому я думаю, что это должна быть какая-то настройка окружения, которая есть в моей системе, но я не могу понять, что.

У кого-то еще была эта проблема и как мне от нее избавиться.

Приветствия.

РЕДАКТИРОВАТЬ: Кажется, что проблема только со 2-й строкой.Если я поставлю точку останова на 1-й строке, а затем просто F5 поверх нее, тогда все будет хорошо.Но если я перехожу во / через 2-ю строку, приведение не работает, и я остаюсь на уровне 0.
Я также попытался сначала установить i на 1, а затем посмотреть, работает ли приведение, но оно меняет меня обратно на0 и удаляет мое начальное значение 1.

Вот скриншот:

alt text

Ответы [ 3 ]

1 голос
/ 20 октября 2010

Есть ли у вас все последние исправления службы .NET Framework? Есть некоторые даже для платформы 4.0, хотя я еще не слышал ничего подобного.

* Редактировать *
Что касается моих других предложений, приведение к усечению int и округление Convert.ToInt32, так что Convert.ToInt32 - это то, что вы обычно хотите в любом случае (особенно, если оно работает).

0 голосов
/ 20 октября 2010

Обратите внимание, что на снимке экрана вы не выводите i , вы выводите d - вы на самом деле не используете i . Я не могу воспроизвести поведение, которое вы описали, но я подхожу ближе, если ставлю точку останова на WriteLine в режиме Release: i в этом случае даже не существует. Но почему это так, вы этим не пользуетесь. (Обратите внимание, что я использовал код на вашем снимке экрана для воспроизведения, а не код, который на самом деле использует i .)

0 голосов
/ 20 октября 2010

Попробуйте запустить VS с /SafeMode или /ResetSettings аргументами командной строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...