CharEnumerator CharEnumerator CharEnumerator CharEnumerator Class

定義

String オブジェクトの反復処理と個別の文字の読み取りをサポートします。Supports iterating over a String object and reading its individual characters. このクラスは継承できません。This class cannot be inherited.

public ref class CharEnumerator sealed : ICloneable, System::Collections::Generic::IEnumerator<char>
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class CharEnumerator : ICloneable, System.Collections.Generic.IEnumerator<char>
type CharEnumerator = class
    interface IEnumerator
    interface ICloneable
    interface IEnumerator<char>
    interface IDisposable
Public NotInheritable Class CharEnumerator
Implements ICloneable, IEnumerator(Of Char)
継承
CharEnumeratorCharEnumeratorCharEnumeratorCharEnumerator
属性
実装

次の例ではCharEnumerator 、クラスを使用して、文字列内の個々の文字を列挙しています。The following example uses the CharEnumerator class to enumerate the individual characters in a string. メソッドをCharEnumerator MoveNext呼び出してオブジェクトをインスタンス化し、メソッドを呼び出して1つの文字から次の文字に移動し、 Currentプロパティの値を取得して現在の文字を表示します。 String.GetEnumeratorIt instantiates a CharEnumerator object by calling the String.GetEnumerator method, moves from one character to the next by calling the MoveNext method, and displays the current character by retrieving the value of the Current property.

String ^ title = "A Tale of Two Cities";
CharEnumerator ^ chEnum = title->GetEnumerator();
int ctr = 1;
String ^ outputLine1 = nullptr;
String ^ outputLine2 = nullptr;
String ^ outputLine3 = nullptr; 

while (chEnum->MoveNext())
{
   outputLine1 += ctr < 10 || ctr % 10 != 0 ? "  " : (ctr / 10) + " ";
   outputLine2 += (ctr % 10) + " ";
   outputLine3 += chEnum->Current + " ";
   ctr++;
}

Console::WriteLine("The length of the string is {0} characters:", 
                  title->Length);
Console::WriteLine(outputLine1);
Console::WriteLine(outputLine2);    
Console::WriteLine(outputLine3);
// The example displays the following output to the console:      
//       The length of the string is 20 characters:
//                         1                   2
//       1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
//       A   T a l e   o f   T w o   C i t i e s
string title = "A Tale of Two Cities";
CharEnumerator chEnum = title.GetEnumerator();
int ctr = 1;
string outputLine1 = null;
string outputLine2 = null;
string outputLine3 = null; 

while (chEnum.MoveNext())
{
   outputLine1 += ctr < 10 || ctr % 10 != 0 ? "  " : (ctr / 10) + " ";
   outputLine2 += (ctr % 10) + " ";
   outputLine3 += chEnum.Current + " ";
   ctr++;
}

Console.WriteLine("The length of the string is {0} characters:", 
                  title.Length);
Console.WriteLine(outputLine1);
Console.WriteLine(outputLine2);    
Console.WriteLine(outputLine3);
// The example displays the following output to the console:      
//       The length of the string is 20 characters:
//                         1                   2
//       1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
//       A   T a l e   o f   T w o   C i t i e s
Dim title As String = "A Tale of Two Cities"
Dim chEnum As CharEnumerator = title.GetEnumerator()
Dim ctr As Integer = 1
Dim outputLine1, outputLine2, outputLine3 As String 

Do While chEnum.MoveNext()
   outputLine1 += CStr(iif(ctr < 10 Or ctr Mod 10 <> 0, "  ", CStr(ctr \ 10) + " ")) 
   outputLine2 += (ctr Mod 10)& " "
   outputLine3 += chEnum.Current & " "
   ctr += 1
Loop

Console.WriteLine("The length of the string is {0} characters:", _
                  title.Length)
Console.WriteLine(outputLine1)
Console.WriteLine(outputLine2)    
Console.WriteLine(outputLine3)
' The example displays the following output to the console:      
'       The length of the string is 20 characters:
'                         1                   2
'       1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
'       A   T a l e   o f   T w o   C i t i e s

ただし、次の例に示すように、(のforeach C#場合) またはFor Each (Visual Basic) を使用すると、同じ操作を多少直感的に実行できます。Note, however, that the same operation can be performed somewhat more intuitively by using foreach (in C#) or For Each (in Visual Basic), as the following example shows.

String ^ title = "A Tale of Two Cities";
int ctr = 1;
String ^ outputLine1 = nullptr;
String ^ outputLine2 = nullptr;
String ^ outputLine3 = nullptr; 

for each (wchar_t ch in title)
{
   outputLine1 += ctr < 10 || ctr % 10 != 0 ? "  " : (ctr / 10) + " ";
   outputLine2 += (ctr % 10) + " ";
   outputLine3 += ch + " ";
   ctr++;
}

Console::WriteLine("The length of the string is {0} characters:", 
                  title->Length);
Console::WriteLine(outputLine1);
Console::WriteLine(outputLine2);    
Console::WriteLine(outputLine3);
// The example displays the following output to the console:      
//       The length of the string is 20 characters:
//                         1                   2
//       1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
//       A   T a l e   o f   T w o   C i t i e s
string title = "A Tale of Two Cities";
int ctr = 1;
string outputLine1 = null;
string outputLine2 = null;
string outputLine3 = null; 

foreach (char ch in title)
{
   outputLine1 += ctr < 10 || ctr % 10 != 0 ? "  " : (ctr / 10) + " ";
   outputLine2 += (ctr % 10) + " ";
   outputLine3 += ch + " ";
   ctr++;
}

Console.WriteLine("The length of the string is {0} characters:", 
                  title.Length);
Console.WriteLine(outputLine1);
Console.WriteLine(outputLine2);    
Console.WriteLine(outputLine3);
// The example displays the following output to the console:      
//       The length of the string is 20 characters:
//                         1                   2
//       1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
//       A   T a l e   o f   T w o   C i t i e s
Dim title As String = "A Tale of Two Cities"
Dim ctr As Integer = 1
Dim outputLine1, outputLine2, outputLine3 As String 

For Each ch As Char In title
   outputLine1 += CStr(iif(ctr < 10 Or ctr Mod 10 <> 0, "  ", CStr(ctr \ 10) + " ")) 
   outputLine2 += (ctr Mod 10)& " "
   outputLine3 += ch & " "
   ctr += 1
Next

Console.WriteLine("The length of the string is {0} characters:", _
                  title.Length)
Console.WriteLine(outputLine1)
Console.WriteLine(outputLine2)    
Console.WriteLine(outputLine3)
' The example displays the following output to the console:      
'       The length of the string is 20 characters:
'                         1                   2
'       1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
'       A   T a l e   o f   T w o   C i t i e s

注釈

CharEnumerator 、参照Stringされたオブジェクト内の文字への読み取り専用アクセスを提供します。A CharEnumerator provides read-only access to the characters in a referenced String object. たとえばforeach 、Microsoft Visual Basic およびC#プログラミング言語のステートメントでは、コレクションの要素を反復処理し、文字を反復処理CharEnumeratorするためStringにオブジェクトからを取得します。そのオブジェクト内。For example, the foreach statement of the Microsoft Visual Basic and C# programming languages, which iterates through the elements of a collection, retrieves a CharEnumerator from a String object in order to iterate through the characters in that object.

重要

クラスCharEnumeratorは、個々の16ビットCharインスタンスを列挙します。The CharEnumerator class enumerates individual 16-bit Char instances. Graphemes (つまり、文字の後に1つ以上の文字が続く文字) またはサロゲートペア (Unicode 基本多言語プレーン以外の文字) が1文字であるとは見なされません。It does not consider graphemes (that is, a character followed by one or more combiding characters) or surrogate pairs (that is, characters outside the Unicode Basic Multilingual Plane) as single characters. これらの種類の文字を1つの単位として処理する列挙StringInfo子の場合は、クラスを使用します。For an enumerator that handles these types of characters as a single unit, use the StringInfo class.

CharEnumeratorはパブリックコンストラクターがありません。There is no public constructor for CharEnumerator. 代わりに、オブジェクトのString GetEnumeratorメソッドを呼び出して、文字列CharEnumeratorを参照するために初期化されたを取得します。Instead, call a String object's GetEnumerator method to obtain a CharEnumerator that is initialized to reference the string.

CharEnumeratorCharEnumerator参照する文字列内の文字の内部インデックスを保持します。A CharEnumerator maintains an internal index to the characters in the string the CharEnumerator references. インデックスの状態は、最初の文字の前、または文字列内の最後の文字の後の文字位置を論理的に参照している場合は無効で、文字列内の文字を参照する場合は有効です。The state of the index is invalid when it references a character position logically before the first character or after the last character in the string, and valid when it references a character within the string. インデックスは、最初の文字の前の論理的な位置に初期化され、反復処理が完了したときの最後の文字の後の位置に設定されます。The index is initialized to a position logically before the first character, and is set to a position after the last character when the iteration is complete. インデックスが無効であるときに文字にアクセスしようとすると、例外がスローされます。An exception is thrown if you attempt to access a character while the index is invalid.

メソッドMoveNextはインデックスを1だけインクリメントします。そのため、最初の文字とそれ以降の文字が順番にアクセスされます。The MoveNext method increments the index by one, so the first and subsequent characters are accessed in turn. メソッドResetは、インデックスを最初の文字の前に論理的な位置に設定します。The Reset method sets the index to a position logically before the first character. プロパティCurrentは、現在インデックスによって参照されている文字を取得します。The Current property retrieves the character currently referenced by index. メソッドCloneは、 CharEnumeratorのコピーを作成します。The Clone method creates a copy of the CharEnumerator.

注意

1つ以上のCharEnumeratorスレッドにまたがるの複数の独立したインスタンスは、のString1 つのインスタンスにアクセスできます。Several independent instances of CharEnumerator across one or more threads can have access to a single instance of String. このクラスは、インターフェイスをサポートIEnumeratorするために実装されています。This class is implemented to support the IEnumerator interface. 列挙子の使用の詳細については、「 IEnumerator 」を参照してください。For more information regarding the use of an enumerator, see the IEnumerator topic.

プロパティ

Current Current Current Current

この CharEnumerator オブジェクトによって列挙された文字列内の現在参照されている文字を取得します。Gets the currently referenced character in the string enumerated by this CharEnumerator object.

メソッド

Clone() Clone() Clone() Clone()

現在の CharEnumerator オブジェクトのコピーを作成します。Creates a copy of the current CharEnumerator object.

Dispose() Dispose() Dispose() Dispose()

CharEnumerator クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。Releases all resources used by the current instance of the CharEnumerator class.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
MoveNext() MoveNext() MoveNext() MoveNext()

現在の CharEnumerator オブジェクトの内部インデックスを、列挙された文字列の次の文字にインクリメントします。Increments the internal index of the current CharEnumerator object to the next character of the enumerated string.

Reset() Reset() Reset() Reset()

インデックスを列挙された文字列の先頭文字の前の位置で論理的に初期化します。Initializes the index to a position logically before the first character of the enumerated string.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

明示的なインターフェイスの実装

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

CharEnumerator クラスによって使用されているすべてのリソースを解放します。Releases all resources used by the CharEnumerator class.

IEnumerator.Current IEnumerator.Current IEnumerator.Current IEnumerator.Current

この CharEnumerator オブジェクトによって列挙された文字列内の現在参照されている文字を取得します。Gets the currently referenced character in the string enumerated by this CharEnumerator object. このメンバーの詳細については、「Current」をご覧ください。For a description of this member, see Current.

適用対象

こちらもご覧ください