例如:
var p = new {
rg = new List<string> {
"one",
"two",
}
};
QuickWatch p
,然后点击树中的p.rg[0]
。
表达式变为:new System.Collections.Generic.Mscorlib_CollectionDebugView<string>(p.rg).Items[0]
这是什么废话,我该如何摆脱它?
答案 0 :(得分:0)
“表达式”文本框显示您在树中选择的任何节点的全名。如果您只想查看所选的值,则全名是您需要评估的表达式
List<T>
不是数组,实际上没有名为“[0]”的成员。如果您查看“原始视图”,您将看到List<T>
的实际实现成员。大多数人不关心实现,只想查看列表中的项目。因此,List<T>
有一个DebuggerTypeProxy。类型代理允许在调试器中自定义对象的视图。对于List<T>
,类型代理为Mscorlib_CollectionDebugView
。为了直接评估元素0,您需要实例化类型代理,然后获取元素0的值(TypeProxy.Items[0]
)。