Solo quiero saber si hay un delineador foreach en C#, como el if oneliner (exp) ? then : else
.C# ¿hay un delineador de foreach disponible?
Respuesta
Si usted está tratando con una matriz, puede utilizar el built-in estática ForEach
método:
Array.ForEach(yourArray, x => Console.WriteLine(x));
Si usted está tratando con un List<T>
a continuación, puede utilizar el método integrado ForEach
instancia :
yourList.ForEach(x => Console.WriteLine(x));
No hay nada incorporado que va a trabajar en contra de cualquier secuencia arbitraria IEnumerable<T>
, pero es bastante fácil de rodar su propio método de extensión si siente que lo necesita:
yourSequence.ForEach(x => Console.WriteLine(x));
// ...
public static class EnumerableExtensions
{
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
if (source == null) throw new ArgumentNullException("source");
if (action == null) throw new ArgumentNullException("action");
foreach (T item in source)
{
action(item);
}
}
}
foreach
Hoja de liners podrían lograrse con métodos de extensión LINQ. Por ejemplo:
en lugar de:
var result = new List<string>();
foreach (var item in someCollection)
{
result.Add(item.Title);
}
se podía:
var result = someCollection.Select(x => x.Title).ToList();
Claro, usted puede usar algo como List<>::ForEach
:
List<String> s = new List<string>();
s.Add("These");
s.Add("Is");
s.Add("Some");
s.Add("Data");
s.ForEach(_string => Console.WriteLine(_string));
La diferencia principal entre si y operador ? es eso si es una declaración mientras "?" produce una expresión. Es decir. no se puede hacer esto:
var _ = (exp) ? then : else; // ok
pero no esto:
var _ = if (exp) { then; } else { else; }; // error
Así que si usted está buscando algo así como la expresión foreach no hay ningún tipo .NET que, naturalmente, puede volver a excepción de vacío, sino no hay valores de tipo void, por lo que puede igualmente acaba de escribir:
foreach (var item in collection) process(item);
En muchos lenguajes funcionales se utiliza un tipo de unidad en lugar de vacío que es del tipo con un único valor. Puede emular esto en .NET y crear su propia expresión foreach:
class Unit
{
public override bool Equals(object obj)
{
return true;
}
public override int GetHashCode()
{
return 0;
}
}
public static class EnumerableEx
{
public static Unit ForEach<TSource>(
this IEnumerable<TSource> source,
Action<TSource> action)
{
foreach (var item in source)
{
action(item);
}
return new Unit();
}
}
Existe, sin embargo casi no existe ningún caso de uso de tales expresiones.
- 1. C# foreach dentro de un bucle Foreach
- 2. Python: ¿hay un bucle de tipo C disponible?
- 3. ¿Hay un Decompiler Silverlight disponible?
- 4. ¿Hay un contenedor C# disponible para Salesforce REST Api?
- 5. ¿Hay un algoritmo Fuzzy C-Means disponible para Python?
- 6. ¿Hay un delegado disponible para las propiedades en C#?
- 7. ¿Hay un bucle foreach en Go?
- 8. ¿Hay Dart VM disponible?
- 9. Compruebe si hay un módulo node.js disponible
- 10. C++ en foreach
- 11. ¿Hay un registrador de color habilitado para Haskell disponible?
- 12. ¿hay disponible C# ZeroConf puro, bonjour o dns-sd?
- 13. ¿Hay alguna manera de romper un ciclo foreach en velocidad?
- 14. C# Nodo XML de Foreach
- 15. ASP.NET MVC3 C# - foreach
- 16. foreach en C# recálculo
- 17. ¿Hay un gancho de crédito de Emacs disponible para poder redefinir C-j?
- 18. ¿Hay un tipo de campo multivalor disponible en PostgreSQL?
- 19. ¿Preprocesador Objective-C disponible?
- 20. Eliminar foreach - C# código-optimización
- 21. ¿Hay alguna tarjeta de referencia UML disponible?
- 22. ¿Hay algún repositorio GIT de prueba disponible?
- 23. ¿Hay algún libro de ocsigen disponible?
- 24. ¿Hay algún beneficio al usar un grupo de métodos C# si está disponible?
- 25. C++ make_shared no disponible
- 26. iPhone Objective-C foreach diseño
- 27. Enum en C# y foreach
- 28. ¿Hay un generador ToString() disponible en Visual Studio 2010?
- 29. ¿Cómo hacer un "diff" de un árbol de directorios completo? ¿Hay un software disponible?
- 30. Python - ¿hay algún digitalizador gráfico disponible?
Es extraño que no tengan estas cosas incorporadas. Supongo que si uno sigue el patrón de Python, uno usaría 'Seleccionar' para construir una nueva enumeración. – Domi