に追加され、私はこのように見えるいくつかのコードを持っています私はoldGamePadState.Add(...);を呼び出したことはありませんが、gamePadState.Add(...);という名前を付けました。、要素が、別の辞書(C#の+ XNA)
0
A
答えて
2
私はあなただけ実際一つの辞書を持っている、とあなたは
Control.oldGamePadState = Control.gamePadState;
(またはその逆)をやっているいくつかのコードのどこかを持っている疑いがあります。別の変数からの辞書オブジェクトをコピーしません
- それはコピー参照ので、その文の後に、彼らは両方とも同じ辞書を参照することと思います。それがあなたにとって驚きなら、私のarticle on reference types and value typesを読んでください。
Philが言っているように、それらを非公開にすることを検討すべきです。また、変数を読み取り専用にすることをお勧めします。それは辞書を読み取り専用にしません。つまり、変数が再割り当てされないようにします。
4
他の場所でコードを辞書に追加する可能性は非常に高いです。彼らはどちらも公開されていることがわかります。おそらく、それらを非公開にして、ラッパーメソッドを通して辞書メソッドを公開するだけでよいでしょう。次に、これらのラッパーメソッドにブレークポイントを設定して、他のコードが辞書にアクセスしているかどうかを調べることができます。例えば
:
それはパブリックプロパティではなく、プレーン古いパブリック変数より(getterとsetter)を使用することが一般的に良いアイデアだ理由の詳細についてはpublic static class Control
{
//Change these to private
private static Dictionary<PlayerIndex, GamePadState> gamePadState = new Dictionary<PlayerIndex,GamePadState>();
private static Dictionary<PlayerIndex, GamePadState> oldGamePadState = new Dictionary<PlayerIndex, GamePadState>();
public void AddOld(PlayerIndex index, GamePadState state)
{
oldGamePadState[index] = state; // Set breakpoint here
// When the breakpoint trips, look at the stack trace to find out
// who is calling this method
}
public void AddNew(PlayerIndex index, GamePadState state)
{
gamePadState[index] = state;
}
}
、this stackoverflow answerを参照してください。
関連する問題
- 1. WebDriver要素の辞書
- 2. Python辞書のアクセス要素
- 3. 追加、複数の辞書要素が
- 4. C#辞書内の辞書
- 5. トラブルアクセスするPythonの辞書要素
- 6. 別の辞書
- 7. 要素が別の要素
- 8. C#辞書の平等要件
- 9. UI要素のC#別スレッド
- 10. 別の要素の値に基づいて辞書のある要素の値を合計する
- 11. 辞書の値リストからpythonの同じリスト内の別の要素に一致する要素
- 12. ディクショナリ内の辞書内の要素を辞書内に追加する
- 13. 辞書更新シーケンス要素エラー
- 14. 辞書要素から文字列へ
- 15. C#のXml要素を別の文書にコピー
- 16. 別の関数の辞書が必要です
- 17. 辞書キーで注文された辞書要素のリストを取得する
- 18. C#ある辞書から別の辞書に値を置き換える
- 19. 辞書項目のリストの最小要素と最大要素の検索
- 20. C##ジェネリッククラスの辞書
- 21. TypeScriptのC#辞書?
- 22. 可能性のある「サブ要素の検索で辞書が必要です」
- 23. Pythonの姓別辞書リスト
- 24. 辞書のリストを辞書の別のリストに変換する
- 25. C#タプル辞書
- 26. ActionScript辞書C#
- 27. ソート辞書 - C#
- 28. C#辞書LINQ
- 29. クエリC#辞書
- 30. Python Print辞書の最初の5つの要素
これに該当するかどうかを確認するには、 '.Add()'行にブレークポイントを置き、Object.ReferenceEquals()を評価します(http://msdn.microsoft.com/en-us/library/system.object .referenceequals.aspx)を使用して、2つの辞書参照が同じかどうかを確認します。 – Bevan