CharEnumerator CharEnumerator CharEnumerator CharEnumerator Class

Definition

Unterstützt das Durchlaufen eines String-Objekts und Lesen seiner einzelnen Zeichen.Supports iterating over a String object and reading its individual characters. Diese Klasse kann nicht vererbt werden.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)
Vererbung
CharEnumeratorCharEnumeratorCharEnumeratorCharEnumerator
Attribute
Implementiert

Beispiele

Im folgenden Beispiel wird die CharEnumerator -Klasse verwendet, um die einzelnen Zeichen in einer Zeichenfolge aufzulisten.The following example uses the CharEnumerator class to enumerate the individual characters in a string. Sie instanziiert ein CharEnumerator -Objekt durch Aufrufen String.GetEnumerator der-Methode, wechselt von einem Zeichen zum nächsten, indem MoveNext die-Methode aufgerufen wird, und zeigt das aktuelle Current Zeichen an, indem der Wert der-Eigenschaft abgerufen wird.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

Beachten Sie jedoch, dass derselbe Vorgang mit foreach (in C#) oder For Each (in Visual Basic) etwas intuitiver ausgeführt werden kann, wie im folgenden Beispiel gezeigt.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

Hinweise

Ein CharEnumerator bietet schreibgeschützten Zugriff auf die Zeichen in einem Objekt, String auf das verwiesen wird.A CharEnumerator provides read-only access to the characters in a referenced String object. Beispielsweise ruft die foreach -Anweisung der Microsoft-Visual Basic C# und Programmiersprachen, die die Elemente einer Auflistung durchlaufen, eine CharEnumerator aus einem String -Objekt ab, um die Zeichen zu durchlaufen. in diesem Objekt.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.

Wichtig

Die CharEnumerator -Klasse listet einzelne 16-Bit Char -Instanzen auf.The CharEnumerator class enumerates individual 16-bit Char instances. Graphemes (d. h. ein Zeichen, gefolgt von einem oder mehreren einfügende Zeichen) oder Ersatz Zeichenpaare (d. h. Zeichen außerhalb der Unicode-Basis mehrsprachigen Ebene) als einzelne Zeichen werden nicht berücksichtigt.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. Verwenden Sie für einen Enumerator, der diese Zeichen Typen als einzelne Einheit behandelt, die StringInfo -Klasse.For an enumerator that handles these types of characters as a single unit, use the StringInfo class.

Es ist kein öffentlicher Konstruktor für CharEnumeratorvorhanden.There is no public constructor for CharEnumerator. Rufen Sie stattdessen die String -Methode GetEnumerator eines-Objekts auf CharEnumerator , um einen abzurufen, der zum Verweisen auf die Zeichenfolge initialisiert wird.Instead, call a String object's GetEnumerator method to obtain a CharEnumerator that is initialized to reference the string.

Ein CharEnumerator verwaltet einen internen Index für die Zeichen in der Zeichenfolge CharEnumerator , auf die verwiesen wird.A CharEnumerator maintains an internal index to the characters in the string the CharEnumerator references. Der Status des Indexes ist ungültig, wenn er auf eine Zeichenposition logisch vor dem ersten oder nach dem letzten Zeichen in der Zeichenfolge verweist und gültig ist, wenn er auf ein Zeichen innerhalb der Zeichenfolge verweist.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. Der Index wird bis zu einer Position vor dem ersten Zeichen initialisiert, und wird auf eine Position hinter dem letzten Zeichen festgelegt, wenn die iterierung vollständig ist.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. Eine Ausnahme wird ausgelöst, wenn Sie versuchen, auf ein Zeichen zuzugreifen, während der Index ungültig ist.An exception is thrown if you attempt to access a character while the index is invalid.

Die MoveNext -Methode erhöht den Index um eins, sodass auf das erste und nachfolgende Zeichen wiederum zugegriffen wird.The MoveNext method increments the index by one, so the first and subsequent characters are accessed in turn. Die Reset -Methode legt den Index auf eine Position vor dem ersten Zeichen fest.The Reset method sets the index to a position logically before the first character. Die Current -Eigenschaft ruft das Zeichen ab, auf das derzeit vom Index verwiesen wird.The Current property retrieves the character currently referenced by index. Die Clone -Methode erstellt eine Kopie CharEnumeratorvon.The Clone method creates a copy of the CharEnumerator.

Hinweis

Mehrere unabhängige Instanzen von CharEnumerator in einem oder mehreren Threads können auf eine einzelne Instanz von Stringzugreifen.Several independent instances of CharEnumerator across one or more threads can have access to a single instance of String. Diese Klasse wird zur Unterstützung der IEnumerator -Schnittstelle implementiert.This class is implemented to support the IEnumerator interface. Weitere Informationen zur Verwendung eines Enumerators finden Sie im IEnumerator Thema.For more information regarding the use of an enumerator, see the IEnumerator topic.

Eigenschaften

Current Current Current Current

Ruft das Zeichen in der von diesem CharEnumerator-Objekt durchlaufenen Zeichenfolge ab, auf das zurzeit verwiesen wird.Gets the currently referenced character in the string enumerated by this CharEnumerator object.

Methoden

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

Erstellt eine Kopie des aktuellen CharEnumerator-Objekts.Creates a copy of the current CharEnumerator object.

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

Gibt alle von der aktuellen Instanz der CharEnumerator-Klasse verwendeten Ressourcen frei.Releases all resources used by the current instance of the CharEnumerator class.

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

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

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

Fungiert als Standardhashfunktion.Serves as the default hash function.

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

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

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

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

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

Inkrementiert den internen Index des aktuellen CharEnumerator-Objekts zum nächsten Zeichen der aufgelisteten Zeichenfolge.Increments the internal index of the current CharEnumerator object to the next character of the enumerated string.

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

Initialisiert den Index auf eine Position, die sich logisch vor dem ersten Zeichen der aufgelisteten Zeichenfolge befindet.Initializes the index to a position logically before the first character of the enumerated string.

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

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Explizite Schnittstellenimplementierungen

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

Gibt alle von der CharEnumerator-Klasse verwendeten Ressourcen frei.Releases all resources used by the CharEnumerator class.

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

Ruft das Zeichen in der von diesem CharEnumerator-Objekt durchlaufenen Zeichenfolge ab, auf das zurzeit verwiesen wird.Gets the currently referenced character in the string enumerated by this CharEnumerator object. Eine Beschreibung dieses Elements finden Sie unter Current.For a description of this member, see Current.

Gilt für:

Siehe auch