CharEnumerator Klasa

Definicja

Obsługuje iterację na obiekcie String i odczytywanie 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>
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.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class CharEnumerator : ICloneable, System.Collections.Generic.IEnumerator<char>
type CharEnumerator = class
    interface IEnumerator<char>
    interface IEnumerator
    interface IDisposable
    interface ICloneable
type CharEnumerator = class
    interface IEnumerator
    interface ICloneable
type CharEnumerator = class
    interface ICloneable
    interface IEnumerator<char>
    interface IDisposable
    interface IEnumerator
type CharEnumerator = class
    interface ICloneable
    interface IEnumerator<char>
    interface IEnumerator
    interface IDisposable
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
Dziedziczenie
CharEnumerator
Atrybuty
Implementuje

Przykłady

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

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

CharEnumerator zapewnia dostęp tylko do odczytu do znaków w obiekcie String, do którego istnieje odwołanie.A CharEnumerator provides read-only access to the characters in a referenced String object. Na przykład foreach instrukcji Microsoft Visual Basic i C# języka programowania, która iteruje przez elementy kolekcji, pobiera CharEnumerator z obiektu String, 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 CharEnumerator wylicza pojedyncze 16-bitowe wystąpienia Char.The 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ę, należy użyć klasy StringInfo.For an enumerator that handles these types of characters as a single unit, use the StringInfo class.

Brak konstruktora publicznego dla CharEnumerator.There is no public constructor for CharEnumerator. Zamiast tego należy wywołać metodę GetEnumerator obiektu String, aby uzyskać 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.

CharEnumerator utrzymuje wewnętrzny indeks do znaków w ciągu, CharEnumerator odwołania.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.

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

Uwaga

Kilka niezależnych wystąpień CharEnumerator na jednym lub wielu wątkach może mieć dostęp do jednego wystąpienia String.Several independent instances of CharEnumerator across one or more threads can have access to a single instance of String. Ta klasa jest zaimplementowana do obsługi interfejsu IEnumerator.This class is implemented to support the IEnumerator interface. Aby uzyskać więcej informacji na temat korzystania z modułu wyliczającego, zobacz temat IEnumerator.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 obiekt CharEnumerator.Gets the currently referenced character in the string enumerated by this CharEnumerator object.

Metody

Clone()

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

Dispose()

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

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.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 obiektu CharEnumerator 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 reprezentujący 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 klasę CharEnumerator.Releases all resources used by the CharEnumerator class.

IEnumerator.Current

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

Dotyczy

Zobacz też