【问题标题】:C# check to see if property is accessed by the visual studio debuggerC# 检查 Visual Studio 调试器是否访问了属性
【发布时间】:2017-11-12 10:09:18
【问题描述】:

我正在编写一个 C# 应用程序。我有一些具有一些惰性属性的对象,当您请求它们的值时,它们实际上做了很多工作。

我希望能够在调试时检查它们是否被 Visual Studio 调试器调用,并且根本不执行它们。例如,当我单击具有这些属性的对象时,它根本不应该加载它们。

我该怎么做?

【问题讨论】:

  • 使用断点查看调试器是否调用它们并在发布模式下使用#DEBUG 以完全不加载它们。
  • 虽然我不完全确定你想要的东西不是(很容易)可行的,但我很确定即使你能做到它也没有用,你应该让你的生活更轻松,把函数内部的代码,而不是属性。 getter/setter 的副作用不是很好。
  • @rtur while true - 缓存值的属性(因此执行繁重的工作一次然后表现得像普通属性)是很常见的做法。
  • 我绞尽脑汁,但不记得确切的名字。后来向 .NET 添加了一项功能,该功能可防止在属性执行危险代码时评估监视。 watch 表达式快速失败,而不是执行该代码。例如,对于线程同步原语很有用。我找不到它了,它很模糊,希望这能唤起别人的记忆。
  • @HansPassant 你可能在想nseblogs.msdn.microsoft.com/visualstudio/2017/06/26/…

标签: c# visual-studio debugging


【解决方案1】:

考虑使用DebuggerBrowsableAttribute

[DebuggerBrowsable(DebuggerBrowsableState.Never)]

docs 状态:

从不 -> 从不显示元素。

https://lostechies.com/jamesgregory/2009/08/18/debugger-property-evaluation-side-effects/ 还简要讨论了该属性。

【讨论】:

    【解决方案2】:

    除了excellent suggestion of @mjwills之外,如果你没有源代码或者此时不想修改,请在VS中开启功能:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 2016-11-11
      • 2011-08-22
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      相关资源
      最近更新 更多