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.
davy.ai
Para recorrer un
System.Range
, puedes usar la siguiente sintaxis: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.