Las estructuras «generics»

Una ventaja de las estructuras dinámicas es que permiten guardar datos de cualquier tipo, incluso datos de distinto tipo en una misma estructura. En ocasiones puede ser interesante ser algo un poco más rígido, y que un ArrayList esté adaptado a un tipo de dato, y no necesite una conversión de tipos cada vez que extraigamos un dato.

Otra forma de inicializar la lista

También podemos recorrerlo mediante un blucle for

De esta misma forma, podríamos crear una lista de structs, o de objetos, o de cualquier otro dato.

Ejemplo de struct:

Ejemplo que compara una estructura con una clase:

El resultado:

El resultado del ejemplo muestra que, cuando se pasa la instancia de clase al método classtaker, sólo cambia el valor del campo de la clase. Sin embargo, el campo de una estructura no cambia al pasar su instancia al método structtaker. Esto es debido a que lo que se pasa al método structtaker es una copia de la estructura mientras que lo que se pasa al método classtaker es una referencia a la clase.

Las estructuras pueden declarar constructores, pero deben utilizar parámetros. Es un error declarar un constructor predeterminado (sin parámetros) para una estructura. Los miembros de una estructura no pueden tener inicializadores. Siempre existe un constructor predeterminado que inicializa los miembros de la estructura con sus valores predeterminados.

Cuando se crea un objeto struct mediante el operador new, se crea y se llama al constructor apropiado. A diferencia de las clases, se pueden crear instancias de las estructuras sin utilizar el operador New. Si no se utiliza New, los campos permanecerán sin asignar y el objeto no se podrá utilizar hasta haber inicializado todos los campos.
A diferencia de las clases, para las estructuras no existe herencia. Una estructura no puede heredar de otra estructura o clase, ni puede ser la base de una clase. Sin embargo, las estructuras heredan de la clase base object.

 

No sólo tenemos listas. Por ejemplo, también existe un tipo «Dictionary», que equivale a una tabla Hash, pero en la que las claves y los valores no tienen por qué ser strings, sino el tipo de datos que nosotros decidamos. Por ejemplo, podemos usar una cadena como clave, pero un número entero como valor obtenido:

Ejemplo:

Otro ejemplo:

Recorrer el diccionario:

Este método será más lento, pero a veces poner las claves en una array o lista será más eficaz.