为了进行单元测试,我正在编写一些代码来自动解析/计算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"; }

去除/保持,nq是否有效果(分别导致"foo"foo)。那么,nq只在试图显示字符串字段/成员时才重要吗?

最佳答案

“nq”字面意思是“no quotes”(从对象值中去掉前导引号)。所以,是的,只有当试图显示字符串成员时。
https://blogs.msdn.microsoft.com/jaredpar/2011/03/18/debuggerdisplay-attribute-best-practices/

07-24 12:55