OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

For Each ~ Next の動作

  • 暇なときにでも
  • 質問No.113149
  • 閲覧数189
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 37% (23/61)

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

For tmp in testCol
  List1.Add tmp
Next

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

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

と書くのに比べ、びっくりするほど処理が速いですよね。
いったい、どんな違いがあるのでしょうか。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

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

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

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

以上、単なる推測ですが、多分こんな感じだと思います。
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ