Incrustación de tablas en estructuras

     Al interoperar con código nativo puede ser necesario pasar a éste estructuras de un tamaño fijo ya que el código nativo puede haber sido programado para esperar un cierto tamaño concreto de las mismas. Hacer esto con estructuras que tengan tablas como campos no era fácil en C# 1.X ya que al ser éstas objetos de tipo referencia, en realidad sus campos almacenaban referencias a los datos de la tabla y no los propios datos.

    C# 2.0 soluciona este problema dando la posibilidad de definir en las estructuras campos de tipo tabla que se almacenará ocupando posiciones de memoria contiguas. Para ello, basta preceder del modificador fixed la definición del campo. Por ejemplo:


 public struct Persona
 {
   public unsafe fixed char Nombre[100];
   public int Edad;
 }

    De este modo, los objetos de la estructura Persona siempre ocuparán 104 bytes (100 por la tabla correspondiente al nombre da persona y 4 por los bytes del tipo int de la edad)

    No obstante, hay que señalar que este uso del modificador fixed sólo funciona en las definiciones de campos que sean tablas unidimensionales planas (vectores) de estructuras en contextos inseguros, y no en campos de clases, ni en contextos seguros, ni con tablas multidimensionales o dentadas.

Incrustación de tablas en estructuras
José Antonio González Seco

José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.
Fecha de alta:15/01/2007
Última actualizacion:15/01/2007
Visitas totales:10534
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com