Me preguntaba, ¿cuándo puedo usar exactamente el ciclo foreach? ¿Debo implementar IEnumerable?¿Se requiere IEnumerable para usar un bucle foreach?
Respuesta
Usted puede forEach aunque cualquier objeto que implemente IEnumerable
o IEnumberable<T>
No hay necesidad de implementar la interfaz IEnumerable utilizar la instrucción foreach. Aquí es una cita de la MSDN (http://msdn.microsoft.com/en-us/library/9yb8xew9.aspx):
En C#, no es absolutamente necesario para una clase de colección de heredar de IEnumerable y IEnumerator con el fin para ser compatible con foreach. Siempre y cuando tenga los GetEnumerator, MoveNext, Reset y miembros actuales, funcionará con foreach. Omitir las interfaces tiene la ventaja de permitirle definir el tipo de retorno de Corriente a ser más específico que Objeto, que proporciona seguridad de tipo.
Me gusta porque dice correctamente que 'IEnumerable' no es requerido. Sin embargo, hace la vida más fácil. –
Eso es realmente interesante, y yo no sabía eso. Pero supongo que esto fue principalmente para apoyar la seguridad del tipo en .NET 1.0. Diría que la mejor manera de garantizar la seguridad de tipo hoy en día es usar la versión genérica de IEnumerable. –
+1 Aprendiendo algo nuevo todos los días. – BoltClock
explicación exhaustiva: http://msdn.microsoft.com/en-us/library/aa664754%28VS.71%29.aspx
preguntarse - es lo que realmente necesita un contador de bucle
La regla de oro que uso es determinar si estoy datos entre dos contenedores indexados, donde la verdad es que moviendo necesita un valor de índice para dirigirse al destino, o más generalmente, '¿necesito un recuento de índice para cada artículo que estoy procesando en el ciclo'? En esos casos, utilizo un bucle for, en casi todos los demás casos (donde foreach puede tratar con el contenedor, que como se señaló anteriormente es prácticamente cualquier contenedor) - la razón es bastante simple, parece bastante estúpido usar foreach y entonces tiene que tomarse la molestia de mantener manualmente un contador de bucle.
- 1. Infinito IEnumerable en un bucle foreach
- 2. Uso de IEnumerable sin el bucle foreach
- 3. IEnumerable, IEnumerator vs foreach, cuándo usar lo
- 4. Cambiar un bucle foreach a un bucle Parallel.ForEach
- 5. C# foreach dentro de un bucle Foreach
- 6. JSHint no me deja usar 'forEach' en un bucle 'for'
- 7. ¿Se requiere una verificación nula para el objeto IEnumerable?
- 8. necesita ayuda para convertir C# bucle foreach para lambda
- 9. Bucle foreach muy lento
- 10. Romper el bucle foreach interno y continuar bucle foreach externo
- 11. bucle foreach con contador
- 12. IEnumerable foreach, haga algo diferente para el último elemento
- 13. afeitar sintaxis - bucle foreach
- 14. Foreach bucle y tareas
- 15. ¿Cómo puedo limitar que se ejecute un bucle foreach n?
- 16. Completar una matriz utilizando un bucle foreach
- 17. XElements retirar en un bucle foreach
- 18. ¿Hay un bucle foreach en Go?
- 19. CoffeeScript: salir de un bucle foreach
- 20. bucle foreach paralelo - comportamiento impar
- 21. PHP bucle foreach ejemplo confusión
- 22. Foreach con el Método de extensión IEnumerable
- 23. ¿Cómo 'continuo' un bucle ForEach desde un método anidado?
- 24. DeleteObject() en el bucle foreach
- 25. Variable de bucle externo en el bucle foreach anidado R
- 26. declarar la variable fuera del bucle foreach
- 27. ¿Cuándo debería usar IEnumerable y GetEnumerator?
- 28. Counter en bucle foreach en C#
- 29. Inicio de un nuevo hilo en un bucle foreach
- 30. bucle foreach con cadenas en Matlab
[primera respuesta] (http://msdn.microsoft.com/fr-fr/library/ttw7t8t6%28VS.80%29.aspx) en Google. – pascal
http://msdn.microsoft.com/en-us/library/9yb8xew9(VS.80).aspx – Dave
Puede usarlos los martes y jueves y durante el quinto fin de semana de un mes calendario. –