为什么我的VS2008手表显示的值不正确?

时间:2010-06-28 18:44:26

标签: c# visual-studio-2008 debugging watch

我有一个字符串变量和一个字符串常量。两者都应该是相同的值(我在条件中测试相等性)。两者的“正确”值应为“scl”。在调试时,如果我在每个上面放一块手表,在“本地”窗口中查看它们,或将鼠标悬停在它们上面,显示的值是“sd”,这是类中不同常量的值(还有很多其他类中的常量和变量正确显示值)。如果我为有问题的变量/常量值插入Debug.WriteLine,(在与watch相同的范围内),输出窗口将打印每个值的正确值。对于我的生活,我无法弄清楚为什么会发生这种情况,或者如何纠正它。

2 个答案:

答案 0 :(得分:1)

我好像通过更改常量的值,运行调试会话,然后将值更改回原来的值来修复它。也许这清除了某种调试缓存。

感谢所有人的帮助!

答案 1 :(得分:0)

这是一个懒惰的属性吗?过去我曾经做过类似这样的问题(可怕的人为例,但是会这样做)

public ClassWithMoo
{
   private string moo;

   public string Moo
   {
      get
      { 
         if (String.IsNullOrEmpty(this.moo)) this.moo = "Baa";
         return this.moo; 
      }
      set
      {
         this.moo = value;
      }
   }
}

public ClassThatUsesMoo
{
    ClassWithMoo cow = new ClassWithMoo();

    // breakpoint here would show cow.Moo = "Baa" 
    // This is because the debugger/watch window will instantiate the property!

    someCodeHere();

    cow.Moo = "Moo"; 
    debug.WriteLine(cow.Moo); // outputs 'Moo' now that it has been set properly
}