Ir al contenido

C sharp NET/Capítulo 8

De Wikilibros, la colección de libros de texto de contenido libre.
Versión para imprimir esta pagina

Estructuras

[editar]




La lista de similitudes entre clases y estructuras es larga: las estructuras pueden implementar interfaces, y pueden tener el mismo tipo de miembros que las clases. Sin embargo, las estructuras difieren de las clases en algunos puntos importantes: las estructuras son tipos por valor en lugar de tipos por referencia, y no permiten la herencia. Los valores de las estructuras quedan almacenados "en la pila" o "alineados". Los programadores cuidadosos pueden a veces mejorar el rendimiento mediante un uso meditado de las estructuras.

Por ejemplo, el uso de una estructura más bien que una clase para un Punto puede producir una gran diferencia en el número de asignaciones producidas en memoria en tiempo de ejecución. El siguiente programa crea e inicializa un arreglo de 100 puntos. Con Punto implementado como clase, 101 objetos separados son inicializados ( uno para el vector y uno para cada uno de los 100 elementos )

class Punto  
{  
   public int x, y;  
   public Punto(int x, int y) {  
      this.x = x;  
      this.y = y;  
   }  
}  
class Test  
{  
    static void Main() {  
        Punto[] Puntos = new Punto[100];  
        for (int i = 0; i < 100; i++)
        {
            Puntos[i] = new Punto(i, i*i);  
        }
    }
}  


Si Punto fuera implementado como una estructura, como en

struct Punto  
{  
   public int x, y;  
   public Punto(int x, int y) {  
      this.x = x;  
      this.y = y;  
   }  
}  


únicamente un objeto es inicializado: el elemento del arreglo. Las instancias de Punto se almacenan de forma alineada en el arreglo. Esta optimización puede ser mal usada. Usar estructuras en lugar de clases también puede hacer que una aplicación funcione más lento o utilice más memoria, pues pasar una instancia de estructura por valor provoca que una copia de esa estructura sea creada.

Rendimiento

[editar]

Como hemos dicho, la principal ventaja por la que se usan en determinadas circunstancias estructuras y no clases es que en circunstancias particulares éstas demuestran mucho mejor rendimiento.


Versión para imprimir esta pagina