Unity3dでC#を操作する。辞書から取得してインデックスを作成する<vector3、node> .values
私は辞書を作ったので、そのキーではなくインデックスで値を返したいと思いますが、どうすればいいですか?
return _nodeDictionary.Values[i];
その行は私に、このエラーを与える:
エラーCS0021:辞書を使用したタイプ `System.Collections.Generic.Dictionary.ValueCollection」
Unity3dでC#を操作する。辞書から取得してインデックスを作成する<vector3、node> .values
私は辞書を作ったので、そのキーではなくインデックスで値を返したいと思いますが、どうすればいいですか?
return _nodeDictionary.Values[i];
その行は私に、このエラーを与える:
エラーCS0021:辞書を使用したタイプ `System.Collections.Generic.Dictionary.ValueCollection」
の発現に[]でインデックスを適用することはできません辞書が順序付けられていないため、索引でアクセスすることはできません。 MSDNから
:あなたは本当にインデックスでアクセスする必要がある場合は
For purposes of enumeration, each item in the dictionary is treated as a KeyValuePair structure representing a value and its key. The order in which the items are returned is undefined.
、あなたは、これは一時的なリストを生成することを
return _nodeDictionary.Values.ToList()[i];
注意を使用することができます!これは、辞書の目的を破るため、データ構造の変更を検討する必要があります。さらに、リストには未定義の順序があるため、インデックスiは何かを意味する可能性があります。とにかくリスト(または辞書)を検索する必要があります。
はい、ありがとうございます!それはそれをクリアする。私はdictionary.valuesと同じデータを持つ通常の配列を作成することにしました。私はそれが必要なときに参照できるので、毎回リストに変換するほうが安いです。 –
「キーではなくインデックスで」とはどういう意味ですか?キーは辞書内のインデックスです。 –
ああ、そうです。私の疑問を解決してくれるもの。 –
訂正:@Sprunth彼の答えで述べたように、辞書は順序付けられていないので、インデックスでアクセスすることはできません。私が意味していたことは、辞書で何かを見るために、キーを使ってそれをあなたのインデックスにすることでした。しかし、配列の場合と同じように、数値インデックスでアクセスすることはできません。 –