10

我在刚刚安装的 Visual Studio 2010 中进行调试,并尝试在快速查看窗口中查看字典。我看到了键和值,但深入研究显示了计数和非公共成员,非公共成员继续跟踪,我从未在字典中看到值。我可以运行 test.Take(10) 并查看值,但我为什么要这样做。我不再安装 VS 2008 进行比较,但似乎我可以更轻松地调试字典。为什么现在是这个样子?它只是我在我的机器上以某种方式设置的设置吗?

测试代码:

  Dictionary<string, string> test = new Dictionary<string, string>();
    test.Add("a", "b");

编辑:我刚刚在控制台应用程序中尝试了相同的调试,它按预期工作。另一个项目是 Silverlight 4 应用程序,为什么它们不同?

控制台调试屏幕截图

Silverlight 4 调试屏幕截图

编辑:来自 Microsoft Connect 的回复:“这是我们的一个遗漏 - 我们之前已经为 Visual Studio 2008 SP1 修复了这个确切的问题,但不幸的是,这个修复没有移植到 Visual Studio 2010 代码库。现在再次修复(这个好时机!)我们正在考虑在 VS2010 SP1 中发布此修复程序。

Alex Turner Program Manager Visual Basic and C# Compiler”所以应该很快就会修复。

编辑:我刚刚在 SP1 中仔细检查了它,它工作正常。

4

2 回答 2

4

有一种解决方法可以在调试器中转储字典的内容。

  1. 在您的项目中,添加对 linq dll 的引用(例如 System.Core)

  2. 将以下语句添加到您的源文件中:

    使用 System.Linq;

  3. 在监视窗口中,键入:

    测试.Take(1)

  4. 然后展开“结果视图”组行。这应该为您提供熟悉的键值对列表。

[rickpastoor 在 connect.microsoft.com 上针对错误 557741 报告了此解决方法]

于 2010-11-05T17:30:42.110 回答
0

Dictionary 的调试器可视化工具是具有完全相同行为的完全相同的类。它仍然是私有的 Mscorlib_DictionaryDebugView 类。未展开显示计数,展开显示元素数组。

您的代码片段表明您使用的是完全不同的 Dictionary 类,它不是通用的。

于 2010-05-07T17:37:56.110 回答