(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

StructLayoutAttribute-Klasse

Hiermit können Sie das physikalische Layout der Datenfelder einer Klasse oder Struktur steuern.

System.Object
  System.Attribute
    System.Runtime.InteropServices.StructLayoutAttribute

Namespace:  System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct, Inherited = false)]
public sealed class StructLayoutAttribute : Attribute

Der StructLayoutAttribute-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeStructLayoutAttribute(Int16)Initialisiert eine neue Instanz der StructLayoutAttribute-Klasse mit dem angegebenen System.Runtime.InteropServices.LayoutKind-Enumerationsmember.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsStructLayoutAttribute(LayoutKind)Initialisiert eine neue Instanz der StructLayoutAttribute-Klasse mit dem angegebenen System.Runtime.InteropServices.LayoutKind-Enumerationsmember.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftTypeIdBei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Von Attribute geerbt.)
Öffentliche EigenschaftUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsValueRuft den LayoutKind-Wert ab, der angibt, wie die Klasse oder Struktur angeordnet ist.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsEqualsInfrastruktur. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetHashCodeGibt den Hashcode für diese Instanz zurück. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeIsDefaultAttributeBeim Überschreiben in einer abgeleiteten Klasse wird angegeben, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkMatchBeim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliches FeldUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCharSetGibt an, ob Zeichenfolgendatenfelder in der Klasse standardmäßig als LPWSTR oder als LPSTR gemarshallt werden müssen.
Öffentliches FeldUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsPackSteuert die Ausrichtung der Datenfelder einer Klasse oder Struktur im Speicher.
Öffentliches FeldUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsSizeGibt die absolute Größe der Klasse oder Struktur an.
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetIDsOfNamesOrdnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoRuft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoCountRuft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.InvokeStellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von Attribute geerbt.)
Zum Seitenanfang

Dieses Attribut kann auf Klassen oder Strukturen angewendet werden.

Die Common Language Runtime steuert das physische Layout der Datenfelder einer Klasse oder Struktur im verwalteten Speicher. Wenn Sie jedoch den Typ an nicht verwalteten Code übergeben möchten, können Sie das StructLayoutAttribute-Attribut verwenden, um den nicht verwalteten Layouts des Typs zu steuern. Verwenden Sie das Attribut mit LayoutKind.Sequential um die sequenziell in der Reihenfolge angeordnet werden Member zu erzwingen, werden sie. Eine blitfähige Typenund LayoutKind.Sequential steuert das Layout im verwalteten Speicher und des Layouts im nicht verwalteten Speicher. Für nicht blitfähige Typen steuert das Layout, wenn die Klasse oder Struktur an nicht verwalteten Code gemarshallt wird, aber steuert nicht das Layout im verwalteten Speicher. Verwenden Sie das Attribut mit LayoutKind.Explicit Die genaue Position eines Datenmembers zu steuern. Dies betrifft verwaltete und nicht verwaltete Layout für Blittable and nicht blitfähige Typen. Anwendung LayoutKind.Explicit Erfordert, dass Sie verwenden FieldOffsetAttribute-Attribut, um die Position jedes Felds im Typ anzugeben.

C#-, Visual Basic- und C++-Compiler wenden den Sequential-Layoutwert standardmäßig auf Strukturen an. Bei Klassen müssen Sie den LayoutKind.Sequential-Wert explizit anwenden. Außerdem übernimmt Tlbimp.exe (Type Library Importer-Tool) das StructLayoutAttribute-Attribut. Es wird stets der LayoutKind.Sequential-Wert angewendet, wenn eine Typbibliothek importiert wird.

Im folgenden Beispiel wird eine verwaltete Deklaration der GetSystemTime-Funktion veranschaulicht, und es wird die MySystemTime-Klasse mit LayoutKind.Explicit-Layout definiert. GetSystemTime wird die Systemzeit ab und gibt an die Konsole ausgegeben.


using System;
using System.Runtime.InteropServices;

namespace InteropSample
{   

   [StructLayout(LayoutKind.Explicit, Size=16, CharSet=CharSet.Ansi)]
   public class MySystemTime 
   {
      [FieldOffset(0)]public ushort wYear; 
      [FieldOffset(2)]public ushort wMonth;
      [FieldOffset(4)]public ushort wDayOfWeek; 
      [FieldOffset(6)]public ushort wDay; 
      [FieldOffset(8)]public ushort wHour; 
      [FieldOffset(10)]public ushort wMinute; 
      [FieldOffset(12)]public ushort wSecond; 
      [FieldOffset(14)]public ushort wMilliseconds; 
   }

   class LibWrapper
   {
      [DllImport("kernel32.dll")]
      public static extern void GetSystemTime([MarshalAs(UnmanagedType.LPStruct)]MySystemTime st);
   };

   class TestApplication
   {      
      public static void Main()
      {
         try
         {
            MySystemTime sysTime = new MySystemTime();
            LibWrapper.GetSystemTime(sysTime);
            Console.WriteLine("The System time is {0}/{1}/{2} {3}:{4}:{5}", sysTime.wDay,
               sysTime.wMonth, sysTime.wYear, sysTime.wHour, sysTime.wMinute, sysTime.wSecond);            
         }         
         catch(TypeLoadException e)
         {
            Console.WriteLine("TypeLoadException : " + e.Message);
         }
         catch(Exception e)
         {
            Console.WriteLine("Exception : " + e.Message);
         }
      }
   }
}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft