for each、infor each, in

配列またはコレクションを反復処理します。Iterates through an array or collection. この非標準のキーワードは、C++/CLI プロジェクトと C++ ネイティブ プロジェクトの両方で使用できます。This non-standard keyword is available in both C++/CLI and native C++ projects. ただし、これを使用することはお勧めしません。However, its use is not recommended. 標準的な使用を検討してステートメント (C++) の範囲に基づく代わりにします。Consider using a standard Range-based for Statement (C++) instead.

すべてのランタイムAll Runtimes

構文Syntax

各 ( 識別子 ) {for each ( type identifier in expression ) {
    ステートメント    statements
}}

パラメーターParameters

typetype
identifier の型。The type of identifier.

identifieridentifier
コレクション要素を表す繰り返し変数。The iteration variable that represents the collection element. ときにidentifierは、参照演算子の追跡要素を変更することができます。When identifier is a Tracking Reference Operator, you can modify the element.

式 (expression)expression
配列式またはコレクション。An array expression or collection. コレクション要素は、コンパイラが identifier 型に変換できるようにする必要があります。The collection element must be such that the compiler can convert it to the identifier type.

ステートメントstatements
実行する 1 つ以上のステートメントを指定します。One or more statements to be executed.

RemarksRemarks

コレクションを反復処理するために、for each ステートメントを使用します。The for each statement is used to iterate through a collection. コレクション内の要素を変更することはできますが、要素を追加または削除することはできません。You can modify elements in a collection, but you cannot add or delete elements.

ステートメント配列またはコレクションの各要素に対して実行されます。The statements are executed for each element in the array or collection. コレクション内の全要素に対する繰り返しが完了すると、制御は、for each ブロックに続くステートメントに移動します。After the iteration has been completed for all the elements in the collection, control is transferred to the statement that follows the for each block.

for each in状況依存のキーワードします。for each and in are context-sensitive keywords.

詳細情報For more information:

Windows ランタイムWindows Runtime

必要条件Requirements

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

Example

この例では、for each を使用して文字列を反復処理する方法を示します。This example shows how to use for each to iterate through a string.

// 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);
}

出力Output

abcd

Testing

共通言語ランタイムCommon Language Runtime

解説Remarks

CLR の構文は同じ、すべてのランタイム構文では、次の手順を除きます。The CLR syntax is the same as the All Runtimes syntax, except as follows.

式 (expression)expression
マネージド配列式またはコレクション。A managed array expression or collection. コンパイラはからに変換できるように、コレクションの要素がある必要がありますObject識別子型。The collection element must be such that the compiler can convert it from Object to the identifier type.

を実装する型に評価されるIEnumerableIEnumerable<T>、または型を定義する、GetEnumerator実装するメソッドの型を返すかIEnumeratorすべてで定義されているメソッドの宣言またはIEnumerator.expression evaluates to a type that implements IEnumerable, IEnumerable<T>, or a type that defines a GetEnumerator method that either returns a type that implements IEnumerator or declares all of the methods that are defined in IEnumerator.

必要条件Requirements

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

Example

この例では、for each を使用して文字列を反復処理する方法を示します。This example shows how to use for each to iterate through a string.

// 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);
}

出力Output

abcd

Testing

関連項目See also

ランタイム プラットフォームのコンポーネントの拡張機能Component Extensions for Runtime Platforms