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. ¿Hay alguna alternativa válida de CSLA disponible?
- 20. ¿Preprocesador Objective-C disponible?
- 21. Eliminar foreach - C# código-optimización
- 22. ¿Hay algún repositorio GIT de prueba disponible?
- 23. ¿Hay alguna tarjeta de referencia UML disponible?
- 24. ¿Hay algún libro de ocsigen disponible?
- 25. ¿Hay algún beneficio al usar un grupo de métodos C# si está disponible?
- 26. C++ make_shared no disponible
- 27. iPhone Objective-C foreach diseño
- 28. Enum en C# y foreach
- 29. ¿Hay un generador ToString() disponible en Visual Studio 2010?
- 30. ¿Cómo hacer un "diff" de un árbol de directorios completo? ¿Hay un software 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