CharEnumerator クラス

定義

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

次の例では、クラスを使用して、 CharEnumerator 文字列内の個々の文字を列挙しています。The following example uses the CharEnumerator class to enumerate the individual characters in a string. メソッドを呼び出してオブジェクトをインスタンス化し CharEnumerator String.GetEnumerator 、メソッドを呼び出して1つの文字から次の文字に移動 MoveNext し、プロパティの値を取得して現在の文字を表示し Current ます。It 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# の場合) または (Visual Basic) を使用すると、同じ操作を多少直感的に実行でき For Each ます。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.

にはパブリックコンストラクターがありません CharEnumeratorThere 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.

は、 CharEnumerator 参照する文字列内の文字の内部インデックスを保持し CharEnumerator ます。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 スレッドにまたがるの複数の独立したインスタンスは、の1つのインスタンスにアクセスでき String ます。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. 列挙子の使用の詳細については、「」を参照してください IEnumeratorFor more information regarding the use of an enumerator, see the IEnumerator topic.

プロパティ

Current

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

メソッド

Clone()

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

Dispose()

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

Equals(Object)

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

(継承元 Object)
GetHashCode()

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

(継承元 Object)
GetType()

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

(継承元 Object)
MemberwiseClone()

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

(継承元 Object)
MoveNext()

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

Reset()

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

ToString()

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

(継承元 Object)

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

IDisposable.Dispose()

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

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.

適用対象

こちらもご覧ください