CharEnumerator Classe

Definição

Dá suporte à iteração em um objeto String e leitura de seus caracteres individuais.Supports iterating over a String object and reading its individual characters. Essa classe não pode ser herdada.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
Herança
CharEnumerator
Atributos
Implementações

Exemplos

O exemplo a seguir usa a classe CharEnumerator para enumerar os caracteres individuais em uma cadeia de caracteres.The following example uses the CharEnumerator class to enumerate the individual characters in a string. Ele cria uma instância de um objeto CharEnumerator chamando o método String.GetEnumerator, passa de um caractere para o seguinte chamando o método MoveNext e exibe o caractere atual recuperando o valor da propriedade 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

Observe, no entanto, que a mesma operação pode ser executada de maneira um pouco mais intuitiva usando C#foreach (in) ou For Each (em Visual Basic), como mostra o exemplo a seguir.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

Comentários

Um CharEnumerator fornece acesso somente leitura aos caracteres em um objeto de String referenciado.A CharEnumerator provides read-only access to the characters in a referenced String object. Por exemplo, a instrução foreach das linguagens de programação C# e Visual Basic da Microsoft, que itera pelos elementos de uma coleção, recupera uma CharEnumerator de um objeto String para iterar os caracteres nesse objeto.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.

Importante

A classe CharEnumerator enumera instâncias individuais de Char de 16 bits.The CharEnumerator class enumerates individual 16-bit Char instances. Ele não considera graphemes (ou seja, um caractere seguido por um ou mais caracteres combiding) ou pares substitutos (ou seja, caracteres fora do plano multilíngüe básico Unicode) como caracteres únicos.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. Para um enumerador que manipula esses tipos de caracteres como uma única unidade, use a classe StringInfo.For an enumerator that handles these types of characters as a single unit, use the StringInfo class.

Não há construtor público para CharEnumerator.There is no public constructor for CharEnumerator. Em vez disso, chame um método GetEnumerator do String para obter uma CharEnumerator inicializada para fazer referência à cadeia de caracteres.Instead, call a String object's GetEnumerator method to obtain a CharEnumerator that is initialized to reference the string.

Uma CharEnumerator mantém um índice interno para os caracteres na cadeia de caracteres que o CharEnumerator faz referência.A CharEnumerator maintains an internal index to the characters in the string the CharEnumerator references. O estado do índice é inválido quando ele faz referência a uma posição de caractere logicamente antes do primeiro caractere ou após o último caractere na cadeia de caracteres e é válido quando faz referência a um caractere dentro da cadeia de caracteres.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. O índice é inicializado para uma posição logicamente antes do primeiro caractere e é definido como uma posição após o último caractere quando a iteração é concluída.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. Uma exceção será gerada se você tentar acessar um caractere enquanto o índice for inválido.An exception is thrown if you attempt to access a character while the index is invalid.

O método MoveNext incrementa o índice em um, portanto, o primeiro e os caracteres subsequentes são acessados por vez.The MoveNext method increments the index by one, so the first and subsequent characters are accessed in turn. O método Reset define o índice para uma posição logicamente antes do primeiro caractere.The Reset method sets the index to a position logically before the first character. A propriedade Current recupera o caractere atualmente referenciado pelo índice.The Current property retrieves the character currently referenced by index. O método Clone cria uma cópia do CharEnumerator.The Clone method creates a copy of the CharEnumerator.

Observação

Várias instâncias independentes de CharEnumerator em um ou mais threads podem ter acesso a uma única instância do String.Several independent instances of CharEnumerator across one or more threads can have access to a single instance of String. Essa classe é implementada para dar suporte à interface IEnumerator.This class is implemented to support the IEnumerator interface. Para obter mais informações sobre o uso de um enumerador, consulte o tópico IEnumerator.For more information regarding the use of an enumerator, see the IEnumerator topic.

Propriedades

Current

Obtém o caractere atualmente referenciado na cadeia de caracteres enumerada por este objeto CharEnumerator.Gets the currently referenced character in the string enumerated by this CharEnumerator object.

Métodos

Clone()

Cria uma cópia do objeto CharEnumerator atual.Creates a copy of the current CharEnumerator object.

Dispose()

Libera todos os recursos usados pela instância atual da classe CharEnumerator.Releases all resources used by the current instance of the CharEnumerator class.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
MoveNext()

Incrementa o índice interno do objeto CharEnumerator atual para o próximo caractere da cadeia de caracteres enumerada.Increments the internal index of the current CharEnumerator object to the next character of the enumerated string.

Reset()

Inicializa o índice para uma posição logicamente antes do primeiro caractere da cadeia de caracteres enumerada.Initializes the index to a position logically before the first character of the enumerated string.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Implantações explícitas de interface

IDisposable.Dispose()

Libera todos os recursos usados pela classe CharEnumerator.Releases all resources used by the CharEnumerator class.

IEnumerator.Current

Obtém o caractere atualmente referenciado na cadeia de caracteres enumerada por este objeto CharEnumerator.Gets the currently referenced character in the string enumerated by this CharEnumerator object. Para obter uma descrição desse membro, confira Current.For a description of this member, see Current.

Aplica-se a

Veja também