Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Type.IsExplicitLayout-Eigenschaft

 

Veröffentlicht: Oktober 2016

Ruft einen Wert ab, der angibt, ob die Felder des aktuellen Typs an den explizit angegebenen Offsets angelegt werden.

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

public bool IsExplicitLayout { get; }

Eigenschaftswert

Type: System.Boolean

true, wenn die Attributes-Eigenschaft des aktuellen Typs TypeAttributes.ExplicitLayout umfasst; andernfalls false.

Diese Eigenschaft wird als Annehmlichkeit bereitgestellt. Alternativ können Sie die TypeAttributes.LayoutMask-Enumerationswert, wählen Sie die Attribute des Typs Layout und diesen dann testen, ob TypeAttributes.ExplicitLayout festgelegt ist. Die TypeAttributes.AutoLayout, TypeAttributes.ExplicitLayout, und TypeAttributes.SequentialLayout -Enumerationswerte geben an, wie die Felder des Typs werden im Speicher angelegt.

Für dynamische Typen können Sie angeben TypeAttributes.ExplicitLayout beim Erstellen des Typs. Im Code gelten die StructLayoutAttribute -Attribut mit der LayoutKind.Explicit -Enumerationswert, der Typ, um anzugeben, dass die Offsets, zu der die Felder begonnen, explizit angegeben werden.

System_CAPS_noteHinweis

Können keine der GetCustomAttributes Methode, um zu bestimmen, ob die StructLayoutAttribute auf einen Typ angewendet wurde.

Wenn die aktuelle Type stellt ein konstruierter generischer Typ dieser Eigenschaft gilt, für die generische Typdefinition, aus der der Typ konstruiert wurde. Zum Beispiel wenn die aktuelle Type darstellt MyGenericType<int> (MyGenericType(Of Integer) in Visual Basic), der Wert dieser Eigenschaft wird bestimmt, indem MyGenericType<T>.

Wenn die aktuelle Type einen Typparameter in der Definition einer generischen Typs oder einer generischen Methode darstellt, auf diese Eigenschaft gibt immer false.

Im folgenden Beispiel wird eine Instanz eines Typs erstellt und zeigt den Wert der IsExplicitLayout Eigenschaft. Er verwendet die MySystemTime Klasse, die auch im Codebeispiel für StructLayoutAttribute.

using System;
using System.Reflection;
using System.ComponentModel;
using System.Runtime.InteropServices;


// Class to test for the ExplicitLayout property.
[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;
}

public class Program
{
    public static void Main(string[] args)
    {
        // Create an instance of the type using the GetType method.
        Type  t = typeof(MySystemTime);
        // Get and display the IsExplicitLayout property.
        Console.WriteLine("\nIsExplicitLayout for MySystemTime is {0}.",
            t.IsExplicitLayout);
    }
}

.NET Framework
Verfügbar seit 1.1
Windows Phone Silverlight
Verfügbar seit 8.0
Zurück zum Anfang
Anzeigen: