es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Haz algo para cada índice en un rango

C# 8.0 introdujo las estructuras System.Index y System.Range

¿Cuál es la forma más concisa de iterar a través de un System.Range?

var owners = new string[] {"Alice", "Bob", "Charlie"};
var pets = new string[] {"Dog", "Cat", "Bird"};

foreach (var index in 1..3) {
    var pet = pets[index];
    var owner = owners[index];
    Console.WriteLine($"{owner} es dueño de un {pet}");
}

La línea anterior foreach (var index in 1..3) { es un error de compilación.

No se puede usar el tipo ‘System.Range’ en una instrucción ‘foreach’ porque no implementa ‘IEnumerable’ ni ‘IEnumerable‘ ni tiene un método ‘GetEnumerator’ adecuado que tenga una propiedad ‘Current’ y un método ‘MoveNext’ de tipo de retorno.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para recorrer un System.Range, puedes usar la siguiente sintaxis:

    foreach (var index in 1..^1) {
        var pet = pets[index];
        var owner = owners[index];
        Console.WriteLine($"{owner} es dueño de un(a) {pet}");
    }
    

    Ten en cuenta que ^1 indica el final del rango y que el bucle no incluirá el elemento en ese índice. Esta sintaxis solo está disponible en C# 8.0 o posterior.

Comments are closed.