私はデータ構造として機能するオブジェクトを反復処理しています。構造体はKeyPairValueを含むリストにすぎず、foreachループを使用するときにValueを取得することが可能かどうか疑問に思っています。foreachの戻り値を変更する
答えて
あなたはKとVのための実際のタイプに置き換え、または一般的な機能を作るためにマイナーチェンジのコメントを見ることができます。この
public IEnumerable<V> EnumerateValues(IEnumerable<KeyValuePair<K, V>> list)
{
foreach (var kv in list) yield return kv.Value;
}
のようなものを実装することができます。
これを修正する必要があります:' var kv in list'、また別の問題があります。 'EnumerateValues
また、 'List'の代わりに' IEnumerable'を使用しないと、もっと一般的になります。 –
@OrelEraki:「var」でキャッチしてくれてありがとう。私はもともと彼が彼の具体的なタイプに潜むことを意味し、彼の経験のレベルに応じてより簡単かもしれません。私はそれを示すために私の応答を更新し、あなたのコメントに彼を指摘してそれを一般的にする。 –
Eric Jの回答をさらに拡大するために、カスタムコレクションの仕組みを完全に変更したい場合は、いくつかのことができます。私のデータ構造はすでにプライベートリストを保持していたので、値として渡す必要はありませんでした。次のことは、コレクションを繰り返し処理しても、コレクションから必要なものが返されるようになります。
public IEnumerable<V> EnumerateValues()
{
foreach (var kv in privateList) yield return kv.Value;
}
public IEnumerator<KeyValuePair<K, V>> GetEnumerator()
{
return EnumerateValues().GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
(私は多くの人が既にこれを知っていると確信しているが、私は私も他の誰かが同様の問題を持っているだけの場合に拡張することが把握ので、私は何かを見つけることができませんでした。)
- 1. EasyAutocomplete:戻り値を変更する
- 2. ImmutableJS:未変更戻り値
- 3. 関数の戻り値とforeachのトラブル
- 4. Razorから戻り値を格納する方法foreachループをJavaScriptに戻す
- 5. 戻り値はCに変更
- 6. gremlinスカラの戻り値の型を変更するList [String]
- 7. メソッドの戻り値の型を変更するベースクラス
- 8. Intellijでメソッドの戻り値を変更する方法は?
- 9. 戻り値の型を変更するFlexオーバーライド
- 10. p.getProperty( "os.arch")の戻り値を変更する方法。
- 11. telerik式エディタ - 戻り値の型を変更する
- 12. PHPのforeachのオブジェクトと変更値
- 13. 平日の戻り値の言語を変更します。
- 14. 変更歩留まりのからの戻り値
- 15. Java foreachの再帰的な戻り値(ツリー内の子の数)
- 16. 拡張クラスに属するオブジェクトのデフォルトの戻り値を変更する
- 17. jQuery attr戻り値の型の最近の変更?
- 18. *初期化後のdefaultdict *のデフォルト戻り値の変更
- 19. main()に変更を戻さないメソッドのクラスのプライベート値を変更する
- 20. foreachループのラベルテキストを変更する
- 21. MySQLの戻り値の戻り値
- 22. foreachを使用して配列の値を変更します
- 23. PHP foreachは元の配列の値を変更します
- 24. ループバック:組み込みモデル関数の戻り値を変更するには
- 25. 更新操作の戻り値
- 26. foreachをラムダ式に変更する
- 27. foreachループをParallel.ForEachループに変更する
- 28. php whileループをforeachに変更する
- 29. メソッドの戻り値の型の共変
- 30. 他のメンバ関数内の定数戻り値の型を持つメンバ関数の戻り値を変更する方法はありますか?
いくつかのコードかもしれませんあなたが望むものを説明するのに役立ちます。 – hatchet
'myKeyValuePair.Value' –
いいえ、あなたは' foreach'にそのことを伝えることはできませんが、 'foreach'で反復処理する前にlinq' Select'ステートメントを使ってリストを処理することができます: 'foreach(var値はmylist.Select(t => t.Value)) ' – Blorgbeard