【问题标题】:Autoproperty debugging自动属性调试
【发布时间】:2015-04-15 14:55:12
【问题描述】:
例如当我使用自动属性时
public string Prop {get;set;}
编译器生成两个函数:get_Prop() 和 set_Prop(string val)。我想从这个函数中设置一个断点。当我按函数设置断点时,此函数名称调试器永远不会进入此函数。 Intellisense 在我的对话框中不起作用 (Ctrl+B)
我的问题:
1)编译器在哪里保存带有替换属性的源代码以运行?如果它这样做。
2) 为什么 Intelisense 不工作?
3) 如何在这个函数上设置断点?
我用的是 VS2013 Ultimate。
【问题讨论】:
标签:
c#
.net
debugging
properties
【解决方案1】:
1) 编译器不保存源代码,它会编译。隐式支持字段仅存在于 IL 代码中。
2) 这是一项功能,而不是错误,我同意它可能很棒。
3) 您必须手动创建一个支持字段才能在其上放置断点。
private string _prop;
public string Prop
{
get { return _prop; }
set { _prop= value; }
}
【解决方案2】:
这里描述了一个很好的解决方案:
Debugging automatic properties
基本上可以用 Breapooint->Create New 设置断点并放上
类名.set_PropertyName
要么
ClassName.get_PropertyName。
它在 Visual Studio 2015 中也可用,或者对于早期版本,您可以使用 VS 插件(例如 Oz Code)自动执行此操作(在 setter 上中断)