問題タブ [trygetvalue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - キーがNullを返す辞書でもある辞書のTryGetValueはなぜですか?
目標: 辞書から値を取得します。上記の値は、キーとして辞書を持っています。
私がやっていること: 値を取得しようとしているキーとまったく同じ値を持つ 2 つ目の辞書を作成しています。使用するTryGetValue
結果: 値が必要ですが、null になります。
コンテキスト: Unity でクラフト機能を作ろうとしています。これは、クラフト材料のクラスがどのように見えるかです (ICombinable は現在まったく同じように見えます):
実際には、ユーザーがタイプ ICombinable のオブジェクトを UI (実装されていない) にドラッグし、ボタンを押してそれらを新しいアイテムに結合できるようにしたいと考えています。たとえば、ハーブ 2 本と水 1 杯で回復ポーション (新しいアイテム) が返ってきます。
サーフェスの背後で、ドラッグ/選択されたオブジェクトをDictionary<ICombinable, int>
int が あたりの量である に保存しますICombinable
。
別のクラスでは、すべてのレシピを保持する別の Dictionary を保存しています。
_recipebook のキーは、材料とその量で構成される実際のレシピです。ICraftable は、そのレシピに対応するオブジェクト/アイテムです。前に示した例では、ICraftable はヒーリング ポーションであり、2 本の棒とコップ 1 杯の水はそれぞれ、その値のキーである辞書のエントリになります。
そして最後に、Craft メソッドは辞書 (つまり、材料とその量のリスト) を受け取り、指定された辞書に対応する項目を _recipebook でチェックしたいと考えています。成分の組み合わせが有効な場合は項目を返し、それ以外の場合は null を返します。
この機能のテスト方法: プロジェクトを開始したばかりなので、単体テストから始めたいと思いました。セットアップは次のとおりです。
結果:
ヒーリングポーションというアイテムとそのレシピとなる辞書を作成中です。これらをレシピブックに追加します。その後、ユーザーの入力を「シミュレート」するための 2 つ目の辞書を作成しています。辞書の内容は、私が Add Recipe() でレシピブックに追加しているものとまったく同じです。TryGetValue
これらの 2 つの辞書が同等であると見なされないのはなぜでしょうか。
機能させるにはどうすればよいですか?