2013-04-10 3 views
5

У меня есть следующие 2 строки кода:C#: VS 2008 отладчик кода выполнения свойство

lstvbWerteC.Clear(); 
if (...) 

lstvbWerteC является полем списка <T> с классом области. Если в отладчике VS 2008 я установил точку останова в выражении if, я ожидал бы, что lstvbWerteC.Count будет 0, но вместо этого он равен 1. У моего класса есть некоторые свойства, которые действительно заполняют список. Чтобы предотвратить побочные эффекты в отладчике, все свойства имеют атрибут [DebuggerBrowsable (DebuggerBrowsableState.Never)]. Тем не менее, как только окно местных жителей видно, отладчик, похоже, выполняет код, заполняющий список. Когда окно locals скрыто, список всегда пуст, доходя до точки останова. Любая информация о деталях отладчика, относящихся к этому типу проблем, будет оценена по достоинству.

ответ

5

Меню Visual Studio: Инструменты - Опции - Отладка - Общие. Снимите флажок «Включить оценку свойства».

Это из Visual Studio 2010. Visual Studio 2008 должна иметь такую ​​же опцию или что-то подобное.

1

Я бы предположил, что поведение, которое вы описываете, не определено в большинстве документации. Конечно, нет требования , чем любой отладчик (VS включен!) Должен соблюдать атрибут DebuggerBrowsable. Кроме того, отсутствие дисплея элемента в окне отладки не обязательно гарантирует, что элемент не оценил отладчиком.

Существует опция под вариантами отладки под названием «Включить оценку имущества», которая может или не может помочь вашему конкретному делу, но в целом я бы сказал, что вы не можете полагаться на это.

Существует часто повторяющийся совет: «У получателей свойств не должно быть [видимых] побочных эффектов». В вашей собственности у получателей do есть побочные эффекты, и это вызывает проблемы с вашим опытом отладки, но это также, возможно, делает ваш класс в целом менее понятным для других разработчиков. Моим советом было бы рассмотреть редизайн, чтобы получить значение свойства не изменило содержание списка.

+0

+1 для «свойств получателей не должно иметь [видимых] побочных эффектов». –

Смежные вопросы