【问题标题】:"Properties" viewable in watch window / Debug view but call not invoked. C#“属性”可在监视窗口/调试视图中查看,但未调用调用。 C#
【发布时间】:2011-06-16 13:11:21
【问题描述】:

我发布了一个关于进入属性的问题Here 原来是VS2008的问题,然后到了2010年。 我正在探索属性,并且已经到了需要弄清楚属性值如何在监视窗口中可见但未调用实际调用的地步。

当我尝试在监视窗口中查看对象属性时,我可以看到我假设我会看到空值的值。所以我在该属性处设置了一个断点并再次运行程序,希望它在那里中断。这没有发生。现在,

  • 在调试模式下显示的属性值是否只是 VS 的一项附加功能,允许开发人员查看属性值,尽管调用应该已被调用
  • 或者我错过了一个设置吗?我知道我已启用“进入属性”选项。
  • 只要我专门访问该属性,断点就会命中。

下面是我看到的屏幕截图。在被注释掉的下一行调用属性调用。

这是我正在测试的代码。

namespace ClassPropertiesView
{
    class A
    {
        public int timings
        {
            get
            {
                return objB.bTimes;
            }
        }

        public B objB
        {
            get
            {
                return new B();
            }
        }
    }

    public class B
    {
        public int bTimes
        {
            get
            {
                return -1;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            A anObject = new A();
     //       Console.WriteLine(anObject.timings);
        }
    }
}

感谢任何帮助。谢谢!

【问题讨论】:

    标签: c# debugging properties


    【解决方案1】:

    如您所见,当您使用监视窗口(和其他 VS 调试视图)时,您在方法中设置的断点不会被命中。

    我确定这是设计使然。如果您打开了一个模态 Instant Watch 窗口,并且您看到了一个属性,它将如何向您显示当前窗口后面的代码。

    Tools...Options...Debug\General 中还有一个名为Allow property evaluation in variable windows 的设置。如果您不喜欢 get_property 方法的自动调用,可以将其关闭。

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      相关资源
      最近更新 更多