CharEnumerator Klasa

Definicja

Obsługuje iterację String obiektu i odczytywanie jego poszczególnych znaków.Supports iterating over a String object and reading its individual characters. Klasa ta nie może być dziedziczona.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)
Dziedziczenie
CharEnumerator
Atrybuty
Implementuje

Przykłady

Poniższy przykład używa CharEnumerator klasy do wyliczania pojedynczych znaków w ciągu.The following example uses the CharEnumerator class to enumerate the individual characters in a string. Tworzy wystąpienie CharEnumerator obiektu przez String.GetEnumerator wywołanie metody, przenosi z jednego znaku do następnego przez wywołanie MoveNext metody i wyświetla Current bieżący znak przez pobranie wartości właściwości.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

Należy jednak pamiętać, że ta sama operacja może być wykonywana nieco bardziej intuicyjnie przy użyciu foreach (w C#) lub For Each (w Visual Basic), jak pokazano w poniższym przykładzie.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

Uwagi

A CharEnumerator zapewnia dostęp tylko do odczytu do znaków w obiekcie, do String którego się odwołuje.A CharEnumerator provides read-only access to the characters in a referenced String object. Na foreach przykład, instrukcja Microsoft Visual Basic i C# Języki programowania, które iteruje przez elementy CharEnumerator kolekcji, String pobiera z obiektu, aby wykonać iterację znaków w tym obiekcie.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.

Ważne

Klasa wylicza pojedyncze wystąpienia 16-bitowe Char. CharEnumeratorThe CharEnumerator class enumerates individual 16-bit Char instances. Nie należy traktować graphemes (czyli znaku, po którym następuje co najmniej jeden znak combiding) lub pary zastępczych (czyli znaków poza podstawową warstwą wielojęzyczną Unicode) jako pojedyncze znaki.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. Dla modułu wyliczającego, który obsługuje te typy znaków jako pojedynczą jednostkę, StringInfo należy użyć klasy.For an enumerator that handles these types of characters as a single unit, use the StringInfo class.

Brak konstruktora publicznego dla elementu CharEnumerator.There is no public constructor for CharEnumerator. Zamiast tego należy wywołać String GetEnumerator metodę obiektu, aby uzyskać element CharEnumerator , który jest zainicjowany do odwoływania się do ciągu.Instead, call a String object's GetEnumerator method to obtain a CharEnumerator that is initialized to reference the string.

A CharEnumerator utrzymuje wewnętrzny indeks do znaków w ciągu, do których się CharEnumerator odwołuje.A CharEnumerator maintains an internal index to the characters in the string the CharEnumerator references. Stan indeksu jest nieprawidłowy, gdy odwołuje się do pozycji znaku logicznie przed pierwszym znakiem lub po ostatnim znaku w ciągu, i jest prawidłowy, gdy odwołuje się do znaku w ciągu.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. Indeks jest inicjowany do pozycji logicznie przed pierwszym znakiem i jest ustawiany na pozycji po ostatnim znaku, gdy iteracja zostanie zakończona.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. Wyjątek jest generowany, jeśli próbujesz uzyskać dostęp do znaku, gdy indeks jest nieprawidłowy.An exception is thrown if you attempt to access a character while the index is invalid.

MoveNext Metoda zwiększa indeks o jeden, tak więc pierwsze i kolejne znaki są dostępne z kolei.The MoveNext method increments the index by one, so the first and subsequent characters are accessed in turn. Reset Metoda ustawia indeks na pozycję logicznie przed pierwszym znakiem.The Reset method sets the index to a position logically before the first character. Current Właściwość pobiera znak aktualnie przywoływany przez indeks.The Current property retrieves the character currently referenced by index. Metoda tworzy kopię CharEnumerator. CloneThe Clone method creates a copy of the CharEnumerator.

Uwaga

Kilka niezależnych CharEnumerator wystąpień w jednym lub wielu wątkach może mieć dostęp do jednego Stringwystąpienia.Several independent instances of CharEnumerator across one or more threads can have access to a single instance of String. Ta klasa jest zaimplementowana do IEnumerator obsługi interfejsu.This class is implemented to support the IEnumerator interface. Aby uzyskać więcej informacji dotyczących korzystania z modułu wyliczającego, IEnumerator Zobacz temat.For more information regarding the use of an enumerator, see the IEnumerator topic.

Właściwości

Current

Pobiera aktualnie przywoływany znak w ciągu wyliczanym przez ten CharEnumerator obiekt.Gets the currently referenced character in the string enumerated by this CharEnumerator object.

Metody

Clone()

Tworzy kopię bieżącego CharEnumerator obiektu.Creates a copy of the current CharEnumerator object.

Dispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie CharEnumerator klasy.Releases all resources used by the current instance of the CharEnumerator class.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
MoveNext()

Zwiększa wewnętrzny indeks bieżącego CharEnumerator obiektu do następnego znaku wyliczeniowego ciągu.Increments the internal index of the current CharEnumerator object to the next character of the enumerated string.

Reset()

Inicjuje indeks do pozycji logicznej przed pierwszym znakiem wyliczeniowego ciągu.Initializes the index to a position logically before the first character of the enumerated string.

ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia wszystkie zasoby używane przez CharEnumerator klasę.Releases all resources used by the CharEnumerator class.

IEnumerator.Current

Pobiera aktualnie przywoływany znak w ciągu wyliczanym przez ten CharEnumerator obiekt.Gets the currently referenced character in the string enumerated by this CharEnumerator object. Aby uzyskać opis tego elementu członkowskiego, CurrentZobacz.For a description of this member, see Current.

Dotyczy

Zobacz też