Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 22702|Respuesta: 0

[Fuente] Existen varios tipos de rollups para colecciones en C#

[Copiar enlace]
Publicado en 11/11/2014 8:44:59 | | |
Una colección que representa un conjunto de objetos a los que se puede acceder recorriendo cada elemento (en particular, puede accederse usando el bucle foreach)
Una colección contiene múltiples elementos, es decir, hay un objeto de clase de colección y N objetos de elementos

Debido a que cualquier clase de colección implementa la interfaz IEnumerable, cualquier objeto de clase colección tiene un método GetEnumerator(), que puede devolver un objeto que implemente la interfaz IEnumerator, que no es ni un objeto de clase de colección ni un objeto de clase de elemento de colección, sino que es un objeto de clase independiente. Este objeto te permite iterar por cada objeto elemento en el objeto de clase colección

Si la clase de colección es una clase de colección definida por el usuario, el usuario debe implementar su método GetEnumerator(), de lo contrario no se pueden usar bucles. Por supuesto, la clase IEnumerator correspondiente a esta clase de colección personalizada (la clase que implementa la interfaz) también debe ser personalizada

Por ejemplo, el IEnumerador correspondiente a la clase de colección ArrayList es ArrayListEnumeratorSimple
            El IEnumerator correspondiente a la clase de colección de arrays es SZArrayEnumerator
      (Ninguna de las dos clases está cubierta en la documentación de la Biblioteca de Clases .NET Framework (MSDN))

1. Las interfaces en System.Colloctions que representan el comportamiento de la colección son:
1) Interpretación
Define el tamaño, el número de enums y los métodos de sincronización para todas las colecciones. Derivado de IEnumerable
Define el comportamiento más básico de la clase de colección, y todas las clases de colección implementan esta interfaz (interfaz base)
Pero su comportamiento es demasiado básico: es principalmente una propiedad de Count, y no tiene mucho sentido implementarla sola

2) IEnumerable
Exponer una enumeración que soporte iteraciones simples sobre un conjunto
Solo tiene un método, GetEnumerator(), que devuelve una interfaz IEnumerator a través de la cual puede recorrer la colección
Básicamente todas las clases de colección implementan esta interfaz

3) IList
La implementación de IList es una colección de valores que son ordenables y pueden ser accedidos por índice para sus miembros, y ella misma implementa las interfaces ICollection e IEnumerable
es la clase base abstracta para todas las listas. Existen tres categorías de implementaciones IList: solo lectura, tamaño fijo y tamaño variable.

4) Identificación
La implementación IDictionary es una colección de pares clave/valor que a su vez implementa las interfaces ICollection e IEnumerable
es la interfaz base de una colección de pares clave/valor. Existen tres categorías de implementaciones IDictionary: solo lectura, tamaño fijo y tamaño variable.
IDictionary puede llamarse diccionario, mapa o lista de shash, y accede a valores basados en claves (de cualquier tipo).

2. Las clases de colección que pueden usarse directamente en System. Las colecciones son:
1) ArrayList
Implementa interfaces: IList, ICollection, IEnumerable
Mientras la colección no se modifique, ArrayList puede soportar con seguridad múltiples lectores al mismo tiempo
A medida que se añaden elementos a la ArrayList, la capacidad aumenta automáticamente bajo demanda mediante la reasignación (aumento 2x)
Si necesitas crear un array de objetos, pero no conoces el tamaño del array de antemano, puedes usar ArrayList
ArrayList se refiere a todos los elementos como objetos, por lo que debe ser tipado al acceder a elementos en ArrayList
Ventajas: Cambio dinámico de tamaño, inserción y eliminación de elementos flexibles y convenientes, ordenabilidad
Desventajas: El rendimiento de inserción no es tan bueno como el de los arrays, ni los tipos fuertes

2) BitArray
Implementa interfaces: ICollection e IEnumerable
Gestionar arrays comprimidos de valores de bits.

3) Tabla de hash
Implementa interfaces: IDictionary, ICollection, IEnumerable
Puedes añadir y eliminar elementos libremente a la Tabla de Hash, algunos como ArrayList, pero sin la sobrecarga de rendimiento

4) ListaOrdenada
Implementa interfaces: IDictionary, ICollection, IEnumerable
SortedLIST combina las ventajas de ArrayList y Hashtable, y puede ordenarse por valor clave

5) Cola
Implementa interfaces: ICollection e IEnumerable
Las queques son colas, acceso primero en entrar y primero en salir a elementos individuales
Puedes llamar al método GetEnumerator() del objeto Queque para que el objeto IEnumerator itere entre los elementos de la cola

6) Stack
Implementa interfaces: ICollection e IEnumerable
Una pila es una pila que accede a elementos individuales en base a la última en entrar, primero en salir.
Puedes llamar al método GetEnumerator() del objeto Stack para que el objeto IEnumerator itere entre los elementos de la pila

3. Las clases de colección mencionadas anteriormente son todas clases generales de colección, y la mayoría de los elementos que aceptan son del tipo Objeto, cuando el objeto se introduce en
Tras la colección, se pierde la información de tipo original, es decir, estas clases generales de colección no están fuertemente tipadas
La solución alternativa es usar clases de colección fuertemente tipadas
Espacio de nombres System.Collections
Espacio-nombres System.Collections.Specialized Algunas clases pueden cumplir los requisitos y pueden usarse directamente o heredarse





Anterior:Una carta abierta a la mayoría de los penes en la víspera del Día de los Solteros
Próximo:Range Rover genérico en C# (Turn)
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com