プロが教えるわが家の防犯対策術!

コレクションの操作をするときなどに、

For tmp in testCol
  List1.Add tmp
Next

ってな感じでFor Each文をつかいますよね。
あれって、

For i = 0 To testCol.Count
  List1.Add testCol.Item(i)
Next i

と書くのに比べ、びっくりするほど処理が速いですよね。
いったい、どんな違いがあるのでしょうか。

A 回答 (1件)

データ構造のせいだと思います。



コレクションの中に、「このデータの次のデータは何番地から、前のデータは何番地から」って、メモリ上のアドレスの情報が入っているのでしょう。
FOR EACHでは、この情報を参照して高速に次のデータのアドレスを取得しているのだと思います。

それに対して、testCol(i)の方は、データのアドレスを知るのに「コレクションのi番目のデータのアドレスを検索すれ~」って命令をいちいち発しているんだと思います。

以上、単なる推測ですが、多分こんな感じだと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!