for each、in

配列またはコレクションを順番に反復に for each のステートメントを使用します。

すべてのランタイム

構文

for each (type identifier in expression) {
   statements
}

パラメーター

  • type
    identifier の型。

  • identifier
    コレクションの要素を表す反復変数。identifier が追跡参照の場合、要素を変更できます。

  • expression
    配列またはコレクション。コンパイラは identifier のコレクションの型に要素を変換できる必要があります。

  • statements
    実行する 1 つ以上のステートメントを指定します。

解説

コレクションを順番に反復に for each のステートメントが使用されます。コレクションの要素を変更することはできますが、要素を追加または削除できません。

ステートメント は、配列またはコレクションの各要素に対して実行されます。コレクション内の全要素に対する繰り返しが完了すると、制御は、for each ブロックに続く次のステートメントに移動します。

for each と in は状況依存のキーワードです。; 詳細については、状況依存のキーワード (C++ コンポーネント拡張) を参照してください。

開発環境では、キーワードをfor each)、(強調表示、キーを押すと、F1 ヘルプを取得できます。

詳細については、次のトピックを参照してください。

Windows ランタイム

(この言語機能の Windows のランタイム固有の注意がありません)。

ms177202.collapse_all(ja-jp,VS.110).gif要件

コンパイラ オプション: /ZW

ms177202.collapse_all(ja-jp,VS.110).gif

この例では for eachの文字列を反復処理する方法を示します。

// for_each_string1.cpp
// compile with: /ZW
#include <stdio.h>
using namespace Platform;

ref struct MyClass {
   property String^ MyStringProperty;
};

int main() {
   String^ MyString = ref new String("abcd");

   for each ( char c in MyString )
      wprintf("%c", c);

   wprintf("/n");

   MyClass^ x = ref new MyClass();
   x->MyStringProperty = "Testing";

   for each( char c in x->MyStringProperty )
      wprintf("%c", c);
}

出力

  
  

共通言語ランタイム

C++/CLI に固有の すべてのランタイム に示す構文から次の表に、違いは、バッチ処理されます。

パラメーター

  • expression
    マネージ配列またはコレクション。コンパイラは Object から 識別子 のコレクションの型に要素を変換できる必要があります。

    式 は IEnumerableIEnumerable<T>、または GetEnumerator メソッドを定義する型を実装する型になります。後者の場合いずれかを返しますが IEnumerator を実装するか、すべての IEnumerator で定義されたメソッドを宣言する型が、GetEnumerator。

ms177202.collapse_all(ja-jp,VS.110).gif要件

コンパイラ オプション: /clr

ms177202.collapse_all(ja-jp,VS.110).gif

この例では for eachの文字列を反復処理する方法を示します。

// for_each_string2.cpp
// compile with: /clr
using namespace System;

ref struct MyClass {
   property String ^ MyStringProperty;
};

int main() {
   String ^ MyString = gcnew String("abcd");

   for each ( Char c in MyString )
      Console::Write(c);

   Console::WriteLine();

   MyClass ^ x = gcnew MyClass();
   x->MyStringProperty = "Testing";

   for each( Char c in x->MyStringProperty )
      Console::Write(c);
}

出力

  
  

参照

概念

ランタイム プラットフォームのコンポーネントの拡張機能