10

インストールしたばかりのVisualStudio2010でデバッグしていて、クイックウォッチウィンドウで辞書を確認しようとしました。キーと値が表示されますが、それらをドリルダウンすると、カウントメンバーと非公開メンバーが表示されます。非公開メンバーはトレイルを続行し、ディクショナリに値が表示されることはありません。test.Take(10)を実行して値を確認できますが、なぜそれを実行する必要があるのですか。比較するVS2008はもうインストールされていませんが、辞書をはるかに簡単にデバッグできるようです。なぜ今このようになっているのですか?どういうわけか自分のマシンに設定しただけの設定ですか?

テストコード:

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

編集:コンソールアプリで同じデバッグを試しましたが、期待どおりに機能します。もう1つのプロジェクトはSilverlight4アプリケーションですが、なぜそれらが異なるのですか?

コンソールデバッグのスクリーンショット

Silverlight 4のデバッグスクリーンショット

編集:Microsoft Connectからの返信:「これは私たちの側の省略でした-以前はVisual Studio 2008 SP1のこの正確な問題を修正していましたが、残念ながらこの修正はVisual Studio 2010コードベースに移植されませんでした。これは再び修正されました(これは良い時間です!)そして、VS2010SP1でこの修正を出荷することを検討しています。

Alex Turner Program Manager Visual BasicおよびC#コンパイラ」したがって、すぐに修正されるはずです。

編集:SP1でこれを再確認したところ、正しく機能しています。

4

2 に答える 2

4

ディクショナリの内容をデバッガにダンプする回避策があります。

  1. プロジェクトに、linq dll (例: System.Core) への参照を追加します。

  2. 次のステートメントをソース ファイルに追加します。

    System.Linq を使用します。

  3. ウォッチ ウィンドウで、次のように入力します。

    test.Take(1)

  4. 次に、[結果ビュー] グループ行を展開します。これにより、おなじみのキーと値のペアのリストが得られます。

[この回避策は、バグ 557741 について connect.microsoft.com の rickpastoor によって報告されました]

于 2010-11-05T17:30:42.110 に答える
0

Dictionaryのデバッガビジュアライザーは、まったく同じ動作のまったく同じクラスです。それはまだプライベートMscorlib_DictionaryDebugViewクラスです。展開されていない場合はカウントを示し、展開されている場合は要素の配列を示します。

コードスニペットは、ジェネリックではない完全に異なるディクショナリクラスを使用していることを示しています。

于 2010-05-07T17:37:56.110 に答える