Estructuras.

Una estructura no es más que una variable de tipo 'struct'. Como esto no te dice nada, te puedo añadir que se parece a una clase que representa una estructura de datos y que puede contener métodos y atributos. Sin embargo, a diferencia de una clase, se trata de un tipo de valor, por lo que se pueden crear objetos de un tipo estructura sin utilizar el operador 'new'. Es decir, una variable de tipo 'struct' contiene los datos, mientras que una variable de una clase contiene una referencia a los datos. Por eso, cuando se pasa una estructura a un método, se pasa por valor, y no por referencia. Además, una estructura es creada y destruida por el compilador, por lo que sería un error declarar el constructor y el destructor predeterminados. Una estructura no puede heredar de otra estructura o clase.

Una estructura puede ser muy útil para representar objetos de poca complejidad, como por ejemplo un punto en el plano. ¿Por qué, puesto que esto también lo podemos hacer con una clase? Porque una estructura es más eficaz en su tratamiento y, además, es más económica en su uso de memoria.

public class Program
{
    public static void Main()
    {
        Point[] point = new Point[2];
        point[0].x = 100;
        point[0].y = 200;
        point[1].x = 300;
        point[1].y = 400;
    }
}
public struct Point
{
    public int x, y;
    public Point(int cx, int cy)
    {
        x = cx;
        y = cy;
    }
}

Como puedes ver claramente, se ha definido una estructura y se han creado dos referencias de ella, asignando posteriormente de manera manual e independiente los valores de sus coordenadas 'x' y 'y'.