我有一个对象,我必须通过观察窗口观看很多次的功能输出.问题是每次我都要按下刷新按钮,因为"这个表达会导致副作用,不会被评估".有没有办法用[DoesNotCauseSideEffects]之类的东西标记一个函数,这样每次我做一个步骤时手表都会自动评估它?
我在VS2008或2010中编写C#.
编辑: 该功能看起来像这样,并且正如您所看到的那样,不会产生任何副作用.(x,y,z都是双打)
public override string ToString()
{
return "{ " + x.ToString(".00") + ", " + y.ToString(".00") + ", " + z.ToString(".00") + "}";
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
"此表达式会导致副作用,不会被评估".怎么压制?
我在Visual Studio中使用Watch窗口.我在Watch窗口中添加了一些变量.有时为了在调试时获取值,我必须单击刷新图标.是不是有一些设置允许它自动刷新?
在Visual Studio 2017中,我创建了一个调用C++函数的.natvis调试器可视化规则.
在调试器中它显示:
This expression has side effects and will not be evaluated.
除此之外,它还显示了一个蓝色箭头,可以点击它以强制它进行评估,然后它实际上会调用该函数.(我认为这可能是最近的功能,因为我似乎记得在VS2013中尝试这个并且不记得它有旁路)
我的问题是:有什么方法可以永久地绕过这个安全检查,这样它总能立即评估我的功能而不需要我点击箭头?
我看了一个非常相似的问题: "这个表达会导致副作用,不会被评估".怎么压制?接受的答案仅对C#有效(在C#表达式的末尾添加ac,强制调试器自动重新评估它)
我想如果存在这样的事情,它将是以下机制之一:
要提供有关应用程序的更多详细信息:我们在代码中使用uint32,它们是从字符串中散列出来的,并且我们有一个仅在开发版本中加载的字符串数据库.解码函数在二叉搜索树中查找u32 ID,返回在存储节点中找到的字符串.所以我知道它完全没有副作用且足够快,每次.natvis规则都这样说时,它不会影响调试体验.
我有一个IClaimsPrincipal变量,我想看看其中有多少个声明。在监视窗口中导航属性很复杂,因此我想自定义该对象的显示方式。
我知道这个[DebuggerTypeProxy]attribute,它最初看起来可能会做我想要的事情。不幸的是,它需要附加到课程中,而我并不“拥有”该课程。在本例中,它是一个Microsoft.IdentityModel.Claims.ClaimsPrincipal.
我想显示 的值IClaimsPrincipal.Identities[0].Claims.Count。
有没有任何方法(使用[DebuggerTypeProxy]或类似的方法)来自定义我不拥有的类型的值在监视窗口中的显示方式?