Type.StructLayoutAttribute Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera typ StructLayoutAttribute , który opisuje układ bieżącego typu.
public:
virtual property System::Runtime::InteropServices::StructLayoutAttribute ^ StructLayoutAttribute { System::Runtime::InteropServices::StructLayoutAttribute ^ get(); };
public virtual System.Runtime.InteropServices.StructLayoutAttribute? StructLayoutAttribute { get; }
public virtual System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get; }
member this.StructLayoutAttribute : System.Runtime.InteropServices.StructLayoutAttribute
Public Overridable ReadOnly Property StructLayoutAttribute As StructLayoutAttribute
Wartość właściwości
Pobiera wartość StructLayoutAttribute , która opisuje funkcje układu brutto bieżącego typu.
Wyjątki
Wywoływana metoda nie jest obsługiwana w klasie bazowej.
Przykłady
Poniższy przykład kodu najpierw definiuje klasę, strukturę i strukturę ze specjalnymi atrybutami układu (struktury są zagnieżdżone w klasie ). Następnie w przykładzie użyto właściwości w StructLayoutAttribute celu uzyskania właściwości dla każdego typu i StructLayoutAttribute wyświetlono właściwości atrybutów.
using namespace System;
using namespace System::Runtime::InteropServices;
value struct Test1
{
public:
Byte B1;
short S;
Byte B2;
};
[StructLayout(LayoutKind::Explicit,Pack=1)]
value struct Test2
{
public:
[FieldOffset(0)]
Byte B1;
[FieldOffset(1)]
short S;
[FieldOffset(3)]
Byte B2;
};
static void DisplayLayoutAttribute( StructLayoutAttribute^ sla )
{
Console::WriteLine( L"\r\nCharSet: {0}\r\n Pack: {1}\r\n Size: {2}\r\n Value: {3}", sla->CharSet, sla->Pack, sla->Size, sla->Value );
}
int main()
{
DisplayLayoutAttribute( Test1::typeid->StructLayoutAttribute );
return 0;
}
using System;
using System.Runtime.InteropServices;
public class Example
{
public static void Main()
{
DisplayLayoutAttribute(typeof(Example).StructLayoutAttribute);
DisplayLayoutAttribute(typeof(Test1).StructLayoutAttribute);
DisplayLayoutAttribute(typeof(Test2).StructLayoutAttribute);
}
private static void DisplayLayoutAttribute(StructLayoutAttribute sla)
{
Console.WriteLine("\r\nCharSet: "+sla.CharSet.ToString()+"\r\n Pack: "+sla.Pack.ToString()+"\r\n Size: "+sla.Size.ToString()+"\r\n Value: "+sla.Value.ToString());
}
public struct Test1
{
public byte B1;
public short S;
public byte B2;
}
[StructLayout(LayoutKind.Explicit, Pack=1)] public struct Test2
{
[FieldOffset(0)] public byte B1;
[FieldOffset(1)] public short S;
[FieldOffset(3)] public byte B2;
}
}
Imports System.Runtime.InteropServices
Public Class Example
Public Shared Sub Main()
DisplayLayoutAttribute(GetType(Example).StructLayoutAttribute)
DisplayLayoutAttribute(GetType(Test1).StructLayoutAttribute)
DisplayLayoutAttribute(GetType(Test2).StructLayoutAttribute)
End Sub
Private Shared Sub DisplayLayoutAttribute( _
ByVal sla As StructLayoutAttribute)
Console.WriteLine(vbCrLf & "CharSet: " & sla.CharSet.ToString() _
& vbCrLf & " Pack: " & sla.Pack.ToString() _
& vbCrLf & " Size: " & sla.Size.ToString() _
& vbCrLf & " Value: " & sla.Value.ToString())
End Sub
Public Structure Test1
Public B1 As Byte
Public S As Short
Public B2 As Byte
End Structure
<StructLayout(LayoutKind.Explicit, Pack:=1)> _
Public Structure Test2
<FieldOffset(0)> Public B1 As Byte
<FieldOffset(1)> Public S As Short
<FieldOffset(3)> Public B2 As Byte
End Structure
End Class
Uwagi
StructLayoutAttribute nie jest zwracany przez GetCustomAttributes metodę . Zamiast tego użyj tej właściwości, aby ją pobrać.