28

显然 VS 2008 不允许仅在自动属性的设置器上设置断点。

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

    public int CurrentFramesize
    {
        get; 
        protected set;
    }

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

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

4

4 回答 4

33

使用 Visual Studio 2008、2010、2012:

  1. 转到断点窗口
  2. New->Break at Function…
  3. 对于获取,键入:ClassName.get_CurrentFramesize()

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

当断点被击中时,您将获得“无可用源”,但您将在调用堆栈中获得调用位置。

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

另请参阅:调试自动属性

于 2011-07-15T22:41:31.017 回答
2

简短的回答是:这个错误功能最终出现在 VS2008 的剪辑室地板上。

(更长的答案- 帽子提示@jdk)

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

于 2010-04-29T21:55:40.403 回答
1

此功能在 Visual Studio 2015 中实现

http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/14/set-breakpoints-on-auto-implemented-properties-with-visual-studio-2015.aspx

于 2015-05-25T07:58:57.410 回答
-3

不,您不能在它们上设置断点,但是您会检查什么?用于存储自动属性的变量仅在运行时分配,因此没有可供调试器显示/访问的变量。

于 2010-04-21T12:04:18.253 回答