DebuggerDisplay指令",nq"是否仅对字符串有效?

Jam*_* Ko 4 .net c# visual-studio debuggerdisplay visual-studio-debugging

我正在编写一些代码来自动解析/评估DebuggerDisplay字符串以进行单元测试.我很好奇,,nq指令只对字符串有效吗?如果我写的话,我明白了

[DebuggerDisplay("{c,nq}")]
public class D { public C c = new C(); }

public class C { }
Run Code Online (Sandbox Code Playgroud)

然后a new D()将出现{C}在调试器中.,nq从显示字符串中删除具有相同的效果.只有当我将类型更改c为字符串时,才会这样

[DebuggerDisplay("{c,nq}")]
public class D { public string c = "foo"; }
Run Code Online (Sandbox Code Playgroud)

删除/保持,nq似乎有效(它分别产生"foo"和结果foo).所以,nq当你试图显示一个字符串字段/成员时才有意义吗?

Eri*_*ric 11

'nq'字面意思是'没有引号'(从对象值中剥离引号).所以,是的,只有在尝试显示字符串成员时.

https://blogs.msdn.microsoft.com/jaredpar/2011/03/18/debuggerdisplay-attribute-best-practices/