bien que se puede escribir fácilmente su propio método de extensión:
public static void Times(this int count, Action action)
{
for (int i = 0; i < count; i++)
{
action();
}
}
entonces usted puede escribir:
10.Times(() => list.Add(GetRandomItem()));
No estoy seguro de que en realidad te sugiero que hagas que, pero es una opción. No creo que haya nada de eso en el marco, aunque puede usar Enumerable.Range
o Enumerable.Repeat
para crear una secuencia diferida de una longitud adecuada, que puede ser útil en algunas situaciones.
A partir de C# 6, todavía se puede acceder a un método estático convenientemente sin necesidad de crear un método de extensión, utilizando una directiva using static
importarlo. Por ejemplo:
// Normally in a namespace, of course.
public class LoopUtilities
{
public static void Repeat(int count, Action action)
{
for (int i = 0; i < count; i++)
{
action();
}
}
}
Entonces, cuando usted quiere usarlo:
using static LoopUtilities;
// Class declaration etc, then:
Repeat(5,() => Console.WriteLine("Hello."));
Sería bueno tener alguna sintaxis para eso sin el extra "() =>" =) –
@Yacoder: No, no lo haría, porque entonces el significado del código sería ambiguo. – Timwi
@Timwi: creo que Yacoder significa una sintaxis completamente diferente, tal vez usando bloques como en Ruby, por ejemplo. No solo escribir '10.Times (list.Add (GetRandomItem()));', que de hecho sería muy molesto y ambiguo (tanto para humanos como para compiladores). – haylem