Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

LayoutKind (Enumeración)

Controla el diseño de un objeto cuando se exporta a código no administrado.

Espacio de nombres:  System.Runtime.InteropServices
Ensamblado:  mscorlib (en mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum LayoutKind

Nombre de miembroDescripción
Compatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsAutoEl motor en tiempo de ejecución elige un diseño apropiado para los miembros de un objeto en la memoria no administrada. Los objetos definidos con este miembro de enumeración no se pueden exponer fuera del código administrado. Si se intenta hacer esto, se genera una excepción.
Compatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsExplicitLa posición exacta de cada miembro de un objeto en memoria no administrada explícitamente controlado, sujeto al valor del campo de StructLayoutAttribute.Pack . Cada miembro debe utilizar FieldOffsetAttribute para indicar la posición del campo dentro del tipo.
Compatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsSequentialLos miembros del objeto se disponen secuencialmente, en el orden en que aparecen cuando se exporta a la memoria no administrada. Los miembros se disponen de acuerdo con el empaquetado especificado en StructLayoutAttribute.Pack y pueden no ser contiguos.

StructLayoutAttribute utiliza esta enumeración. Common Language Runtime utiliza el valor de diseño Auto de manera predeterminada. Para reducir el número de problemas de diseño asociados al valor Auto, los compiladores de C#, Visual Basic y C++ especifican el diseño Sequential para los tipos de valor.

Nota importanteImportante

Los controles de campo de StructLayoutAttribute.Pack la alineación de los campos de datos, y afectan así el diseño independientemente del valor de LayoutKind especificado. De forma predeterminada, el valor de Pack es 0, que indica el tamaño predeterminado de empaquetado para la plataforma actual. Por ejemplo, cuando se utiliza el valor de diseño de Explicit y especifica alineaciones de campo en límites de byte, debe establecer Pack en 1 para obtener el resultado deseado.

En el ejemplo siguiente se muestra la declaración administrada de la función PtInRect, que comprueba si un punto está situado dentro de un rectángulo, y define una estructura Point con diseño Sequential y una estructura Rect con diseño Explicit.


enum Bool
{
   False = 0,
   True
};
[StructLayout(LayoutKind.Sequential)]
public struct Point 
{
   public int x;
   public int y;
}   

[StructLayout(LayoutKind.Explicit)]
public struct Rect 
{
   [FieldOffset(0)] public int left;
   [FieldOffset(4)] public int top;
   [FieldOffset(8)] public int right;
   [FieldOffset(12)] public int bottom;
}   

class LibWrapper
{
   [DllImport("user32.dll", CallingConvention=CallingConvention.StdCall)]
   public static extern Bool PtInRect(ref Rect r, Point p);
};

class TestApplication
{
   public static void Main()
   {
      try
      {
         Bool bPointInRect = 0;
         Rect myRect = new Rect();
         myRect.left = 10;
         myRect.right = 100;
         myRect.top = 10;
         myRect.bottom = 100;
         Point myPoint = new Point();
         myPoint.x = 50;
         myPoint.y = 50;
         bPointInRect = LibWrapper.PtInRect(ref myRect, myPoint);
         if(bPointInRect == Bool.True)
            Console.WriteLine("Point lies within the Rect");
         else
            Console.WriteLine("Point did not lie within the Rect");
      }
      catch(Exception e)
      {
         Console.WriteLine("Exception : " + e.Message);
      }
   }
}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft