DebuggerDisplay 指令“,nq”是否只对字符串有效?

Does the DebuggerDisplay directive ",nq" only have effect for strings?

我正在编写一些代码以自动 parse/evaluate DebuggerDisplay 字符串以进行单元测试。我很好奇,,nq 指令是否只对字符串有效?我看到如果我写

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

public class C { }

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

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

removing/keeping ,nq 似乎有效果(它分别导致 "foo"foo)。那么 ,nq 仅在您尝试显示字符串 field/member 时才重要吗?

'nq' 字面意思是 'no quotes'(从对象值中去掉前导引号)。所以,是的,仅在尝试显示字符串成员时。

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