una sirve que programacion para matriz matrices ejemplos c# .net arrays ienumerable ienumerator

c# - sirve - matrices en programacion c++



¿Por qué las matrices en.net solo implementan IEnumerable y no IEnumerable<T>? (2)

Estaba implementando mi propia clase ArrayList y me sorprendí cuando me di cuenta de que

public System.Collections.Generic.IEnumerator<T> GetEnumerator() { return _array.GetEnumerator(); }

no funcionó ¿Cuál es la razón por la que las matrices no implementan IEnumerator en .NET?

¿Hay algún trabajo alrededor?

Gracias


Las matrices implementan IEnumerable<T> , pero se hace como parte del conocimiento especial que la CLI tiene para las matrices. Esto funciona como si fuera una implementación explícita (pero no lo es: se realiza en tiempo de ejecución). Muchas herramientas no mostrarán esta implementación, esto se describe en la sección Remarks de la descripción general de la clase Array .

Podrías agregar un elenco:

return ((IEnumerable<T>)_array).GetEnumerator();

Tenga en cuenta que la cobertura anterior de MSDN (pre docs.microsoft.com) cambió varias veces con diferentes versiones de .NET, verifique la sección de remarks .


Puede usar el método genérico IEnumerable<T> OfType<T>() del espacio de nombres System.Linq, que extiende la interfaz IEnumerable. Filtrará todos los elementos cuyo tipo sea diferente de T y devolverá la IEnumerable<T> collection . Si usa el operador de conversión (IEnumerable<T>)_array , podría no ser seguro, porque System.Array (y otros tipos no genéricos) almacena elementos del tipo System.Object .