Aquí hay un poco de código que imprime los cuadrados de los números del 0 al 9:¿Hay un método "upto" en C#?
for (int i = 0; i < 10; i++)
Console.WriteLine(i*i);
Hacer algo de 0 a N por 1 a través de un bucle for
es un lenguaje muy común.
He aquí un método UpTo
que expresa lo siguiente:
class MathUtil
{
public static void UpTo(int n, Action<int> proc)
{
for (int i = 0; i < n; i++)
proc(i);
}
}
El ejemplo casillas de arriba es ahora:
MathUtil.UpTo(10, (i) => Console.WriteLine(i * i));
Mi pregunta es, ¿el # librería C estándar vienen con algo parecido a lo anterior UpTo
?
Idealmente, me gustaría una manera de tener 'UpTo' como método en todos los objetos enteros. Entonces podría hacer:
var n = 10;
n.UpTo(...);
¿Es esto posible en C#?
Puede ser una cuestión de gusto, pero considero que la variante 'for' es un poco más legible que' UpTo'. Además, es extremadamente fácil modificar el número de inicio ('0') o el método de incremento (' i ++ ') en la variante' for'. Creo que [los comentarios de Eric Lippert sobre un método 'ForEach'] (http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx) se aplican aquí también. – Heinzi
@Heinzi ¡Gracias por el enlace al artículo de Eric! – dharmatech
.NET Extensions Methods (http://dnpextensions.codeplex.com/) tiene un método de extensión para esto. '5.times (...);' – Jalal