struct union en C#

24/05/2005 - 22:50 por Gandalf | Informe spam
Hola, quisiera crear un estructura que representara el valor de una variable
en memoria y he pensado hacerlo así:

enum TipoVariable{SinDefinir,Entero,Doble,Cadena};
[StructLayout(LayoutKind.Explicit)]
public struct Variable
{
[FieldOffset(0)]
public int Entero;
[FieldOffset(0)]
public double Doble;
[FieldOffset(0)]
public string Cadena;
[FieldOffset(8)] //de los anteriores el de mayor tamaño es el Doble que
ocupa 8 bytes
public TipoVariable Tipo;
}

También he pensado en usar simplemente un object, pero tendría que soportar
el boxing y unboxing. Con la estructura creo que iría más rápido y ahorraría
unos bytes. En fin, que no estoy muy seguro de cual seria la mejor solución.
Agradecería cualquier comentario.

Un Saludo y Gracias.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
24/05/2005 - 23:18 | Informe spam
Gandalf,

Precisamente así se representaban los Variants en tiempos de COM...
Me imagino que estés escribiendo un compilador o algo similar.
En general creo que lo que propones es una buena idea si quieres optimizar
el rendimiento, como ocurre en esos casos.
Ah, si vas a usar el tipo Decimal recuerda que es mayor que el double...

Slds - Octavio

"Gandalf" escribió en el mensaje
news:%
Hola, quisiera crear un estructura que representara el valor de una
variable en memoria y he pensado hacerlo así:

enum TipoVariable{SinDefinir,Entero,Doble,Cadena};
[StructLayout(LayoutKind.Explicit)]
public struct Variable
{
[FieldOffset(0)]
public int Entero;
[FieldOffset(0)]
public double Doble;
[FieldOffset(0)]
public string Cadena;
[FieldOffset(8)] //de los anteriores el de mayor tamaño es el Doble que
ocupa 8 bytes
public TipoVariable Tipo;
}

También he pensado en usar simplemente un object, pero tendría que
soportar el boxing y unboxing. Con la estructura creo que iría más rápido
y ahorraría unos bytes. En fin, que no estoy muy seguro de cual seria la
mejor solución.
Agradecería cualquier comentario.

Un Saludo y Gracias.

Respuesta Responder a este mensaje
#2 Gandalf
25/05/2005 - 10:39 | Informe spam
As acertado, estoy intentando hacer un interprete.

Gracias por tus comentarios Octavio.
Un Saludo.

"Octavio Hernandez" escribió en el mensaje
news:
Gandalf,

Precisamente así se representaban los Variants en tiempos de COM...
Me imagino que estés escribiendo un compilador o algo similar.
En general creo que lo que propones es una buena idea si quieres optimizar
el rendimiento, como ocurre en esos casos.
Ah, si vas a usar el tipo Decimal recuerda que es mayor que el double...

Slds - Octavio

"Gandalf" escribió en el mensaje
news:%
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida