• ベストアンサー

For Each ~ Next の動作

コレクションの操作をするときなどに、 For tmp in testCol   List1.Add tmp Next ってな感じでFor Each文をつかいますよね。 あれって、 For i = 0 To testCol.Count   List1.Add testCol.Item(i) Next i と書くのに比べ、びっくりするほど処理が速いですよね。 いったい、どんな違いがあるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

データ構造のせいだと思います。 コレクションの中に、「このデータの次のデータは何番地から、前のデータは何番地から」って、メモリ上のアドレスの情報が入っているのでしょう。 FOR EACHでは、この情報を参照して高速に次のデータのアドレスを取得しているのだと思います。 それに対して、testCol(i)の方は、データのアドレスを知るのに「コレクションのi番目のデータのアドレスを検索すれ~」って命令をいちいち発しているんだと思います。 以上、単なる推測ですが、多分こんな感じだと思います。

関連するQ&A