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オブジェクトを呼び出すことによって、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# の場合) または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

注釈

ACharEnumerator参照先の文字に読み取り専用アクセスを提供します。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 (つまり、combiding 文字が 1 つまたは複数続く文字) を考慮しませんまたは 1 つの文字とサロゲート ペア (つまり、Unicode 基本多言語面以外の文字)。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.

A 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メソッドは、先頭と後続の文字が順番にアクセスするため、いずれかによって、インデックスをインクリメントします。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.

注意

複数の独立したインスタンスCharEnumerator1 つまたは複数のスレッド間での単一のインスタンスへのアクセスがあることができます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. 列挙子の使用に関する詳細については、次を参照してください。、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.

適用対象

こちらもご覧ください