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 вызывая метод, перемещает от одного символа к другому, вызывая 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 ( For Each в C#) или (в 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

Комментарии

Предоставляет доступ только для чтения к символам в упоминаемом String объекте. CharEnumeratorA 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.

Важно!

Класс перечисляет отдельные 16-разрядные Char экземпляры. CharEnumeratorThe CharEnumerator class enumerates individual 16-bit Char instances. Он не учитывает графемес (то есть символ, за которым следует один или несколько комбидинг символов) или суррогатные пары (т. е. символы за пределами многоязычной многоязыковой плоскости Юникода) как одиночные символы.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. Для перечислителя, который обрабатывает эти типы символов как единое целое, используйте 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.

Поддерживает внутренний индекс символов в строке, CharEnumerator на которые ссылаются. CharEnumeratorA 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. Метод создает копию CharEnumeratorобъекта. CloneThe Clone method creates a copy of the CharEnumerator.

Примечание

Несколько независимых экземпляров CharEnumerator в одном или нескольких потоках могут иметь доступ к одному 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.

Применяется к

Дополнительно