Esta documentación está archivada y no tiene mantenimiento.

CharEnumerator (Clase)

Actualización: noviembre 2007

Admite la iteración en un objeto String y la lectura de sus caracteres individuales. Esta clase no se puede heredar.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class CharEnumerator : ICloneable, 
	IEnumerator<char>, IDisposable, IEnumerator
/** @attribute SerializableAttribute */ 
/** @attribute ComVisibleAttribute(true) */
public final class CharEnumerator implements ICloneable, 
	IEnumerator<char>, IDisposable, IEnumerator
public final class CharEnumerator implements ICloneable, IEnumerator<char>, IDisposable, IEnumerator

Un CharEnumerator proporciona acceso de sólo lectura a los caracteres de un objeto String al que se hace referencia. Por ejemplo, la instrucción foreach de los lenguajes de programación Microsoft Visual Basic y C#, que recorre en iteración los elementos de una colección, recupera un objeto CharEnumerator de un objeto String para recorrer en iteración los caracteres de ese objeto.

No hay ningún constructor público para CharEnumerator. En su lugar, llame al método GetEnumerator de un objeto String para obtener un CharEnumerator que se inicialice para hacer referencia a la cadena.

Un CharEnumerator mantiene un índice interno a los caracteres de la cadena a que hace referencia el CharEnumerator. El estado del índice no es válido cuando hace referencia a una posición de carácter situada lógicamente delante del primer carácter o detrás del último carácter de la cadena, y es válido cuando hace referencia a un carácter situado dentro de la cadena. El índice se inicializa en una posición situada lógicamente delante del primer carácter, y se establece en una posición situada detrás del último carácter cuando finaliza la iteración. Se produce una excepción si se intenta el acceso a un carácter cuando el índice no es válido.

El método MoveNext incrementa el índice en una unidad, de modo que el acceso al primer carácter y a los caracteres siguientes se produce secuencialmente. El método Reset establece el índice en una posición situada lógicamente delante del primer carácter. La propiedad Current recupera el carácter al que hace referencia actualmente el índice. El método Clone crea una copia del CharEnumerator.

dx1ztye4.alert_note(es-es,VS.90).gifNota:

Varias instancias independientes de CharEnumerator en uno o varios subprocesos pueden tener acceso a una sola instancia de String. Esta clase se implementa para admitir la interfaz IEnumerator. Para obtener más información sobre el uso de un enumerador, vea el tema IEnumerator.

En el ejemplo siguiente se utiliza la clase CharEnumerator para enumerar los caracteres individuales de una cadena. Crea una instancia de un objeto CharEnumerator mediante una llamada al método String.GetEnumerator, pasa de un carácter al siguiente mediante una llamada al método MoveNext y muestra el carácter actual recuperando el valor de la propiedad Current.

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


Sin embargo, observe que la misma operación se puede realizar de un modo algo más intuitivo mediante foreach (en C#) o For Each (en Visual Basic), como se muestra en el ejemplo siguiente.

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


System.Object
  System.CharEnumerator

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0
Mostrar: