0

たとえば、要素を持つ HashSet があるとします。

HashSet<int> hsData = new HashSet<int>();

ある時点で、これらの要素を (1 つずつ) 処理する必要があります。もちろん、それを配列に変換して、そのように操作できます。

int[] arr = hsData.ToArray();

しかし、この変換がどれほど効率的かはわかりませんか?

HashSet 自体での使用が推奨さforeachれているようですが、コードのアーキテクチャが原因で使用できません。そのように機能するものが必要です:

最後の要素ですか?いいえの場合は、それを取得して次の要素に進みます。

4

3 に答える 3

2

あなたが述べたように、配列への変換にはいくつかのパフォーマンス上の欠点がある可能性があります。foreach舞台裏で行われているのは、列挙子を取得して実行HashSetすることです。

HashSet<T>IEnumerable<T>また、より効率的な方法でコレクションを列挙するために使用できるも実装しています。については、こちらを参照してくださいIEnumerable

于 2013-04-15T05:47:27.553 に答える
0

必要に応じて、まだ foreach を使用できます。指定されたリスト内のすべての要素の実行中のカウンターを保持し、反復を行うときにデクリメントし、カウンターと比較します。

一方、それを配列に変えることは大したことですか? この操作は何千回も発生していますか?

于 2013-04-15T05:43:21.713 に答える