2010-07-28 16 views
8

me di cuenta de que hay muchos lugares que tenemos algo como esto:StructLayout solo para struct?

[StructLayout(LayoutKind.Sequential, Pack = 1)] 
    public class E2H_LANEFIND_DATA_T 
    { 
.... 
} 

definición de clase con StructLayout. ¿Está bien o StructLayout es solo para struct?

Respuesta

14

The documentation establece claramente:

Puede aplicar este atributo a clases o estructuras.

Normalmente, el tiempo de ejecución de idioma común controla el diseño físico de los campos de datos de una clase o estructura en la memoria administrada. Sin embargo, si desea organizar la clase o las necesidades de estructura de cierta manera, puede usar StructLayoutAttribute. El control explícito de un diseño de clase es importante si la clase se va a pasar a un código no administrado que espera un diseño específico.

El énfasis era mío.

La consideración principal que debe tener en esta situación es si desea que sus instancias se pasen por valor o por referencia, en cuyo caso utilizarían respectivamente una estructura o una clase.

-6

Sí, puede aplicar este atributo a la clase, pero no funcionará. Funciona solo para struct.