代码之家  ›  专栏  ›  技术社区  ›  Cristian Diaconescu

无法在自动属性设置器上设置断点?为什么?

  •  25
  • Cristian Diaconescu  · 技术社区  · 14 年前

    显然,vs 2008不允许只在auto属性的setter上设置断点。

    例如,如果我定义这样的自动属性:

        public int CurrentFramesize
        {
            get; 
            protected set;
        }
    

    然后尝试在setter行上设置断点,整个auto属性将断点变为红色。

    这对于正常的属性来说很好,所以你知道为什么自动属性会得到这种特殊的(限制性的)处理吗?它们是否不仅仅是普通属性的语法糖,还有隐藏的支持字段?

    4 回复  |  直到 9 年前
        1
  •  29
  •   Community T.Woody    7 年前

    使用Visual Studio 2008、2010、2012:

    1. 转到断点窗口
    2. 新->功能中断
    3. 为了得到, 类型: ClassName.get_CurrentFramesize()

      对于集合,键入: ClassName.set_CurrentFramesize(int)

    当断点被点击时,您将得到一个“没有可用的源”,但您将得到调用堆栈中的调用位置。

    我在这里找到了这个解决方案: http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/b1dd0dc3-e9c1-402a-9c79-a5abf7f7286a

    参见: Debugging automatic properties

        2
  •  2
  •   Cristian Diaconescu    14 年前

    简短的回答是:这个 缺陷 该功能最终出现在VS2008的切割室地板上。

    (更长) answer 帽尖@ JDK

    我们所得到的只是一个模糊的承诺,即它正被考虑用于vnext。

        4
  •  -2
  •   ChrisBD    14 年前

    不,你不能在他们身上设置一个断点,但是你会检查什么?存储auto属性的变量只在运行时分配,因此没有供调试器显示/访问的变量。