Type.IsLayoutSequential Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob die Felder des aktuellen Typs sequenziell angeordnet sind, in der Reihenfolge, in der sie definiert oder an die Metadaten ausgegeben wurden.
public:
property bool IsLayoutSequential { bool get(); };
public bool IsLayoutSequential { get; }
member this.IsLayoutSequential : bool
Public ReadOnly Property IsLayoutSequential As Boolean
Eigenschaftswert
true wenn die Attributes Eigenschaft des aktuellen Typs enthält SequentialLayout; andernfalls false.
Implementiert
Beispiele
Im folgenden Beispiel wird eine Instanz einer Klasse erstellt, für die der LayoutKind.Sequential Enumerationswert in der StructLayoutAttribute Klasse festgelegt wurde, die Eigenschaft überprüft IsLayoutSequential und das Ergebnis anzeigt.
using System;
using System.Reflection;
using System.ComponentModel;
using System.Runtime.InteropServices;
class MyTypeSequential1
{
}
[StructLayoutAttribute(LayoutKind.Sequential)]
class MyTypeSequential2
{
public static void Main(string []args)
{
try
{
// Create an instance of myTypeSeq1.
MyTypeSequential1 myObj1 = new MyTypeSequential1();
Type myTypeObj1 = myObj1.GetType();
// Check for and display the SequentialLayout attribute.
Console.WriteLine("\nThe object myObj1 has IsLayoutSequential: {0}.", myObj1.GetType().IsLayoutSequential);
// Create an instance of 'myTypeSeq2' class.
MyTypeSequential2 myObj2 = new MyTypeSequential2();
Type myTypeObj2 = myObj2.GetType();
// Check for and display the SequentialLayout attribute.
Console.WriteLine("\nThe object myObj2 has IsLayoutSequential: {0}.", myObj2.GetType().IsLayoutSequential);
}
catch(Exception e)
{
Console.WriteLine("\nAn exception occurred: {0}", e.Message);
}
}
}
open System.Runtime.InteropServices
type MyTypeSequential1 = struct end
[<StructLayoutAttribute(LayoutKind.Sequential)>]
type MyTypeSequential2 = struct end
try
// Create an instance of myTypeSeq1.
let myObj1 = MyTypeSequential1()
let myTypeObj1 = myObj1.GetType()
// Check for and display the SequentialLayout attribute.
printfn $"\nThe object myObj1 has IsLayoutSequential: {myTypeObj1.IsLayoutSequential}."
// Create an instance of 'myTypeSeq2' class.
let myObj2 = MyTypeSequential2()
let myTypeObj2 = myObj2.GetType()
// Check for and display the SequentialLayout attribute.
printfn $"\nThe object myObj2 has IsLayoutSequential: {myTypeObj2.IsLayoutSequential}."
with e ->
printfn $"\nAn exception occurred: {e.Message}"
Imports System.Reflection
Imports System.ComponentModel
Imports System.Runtime.InteropServices
Class MyTypeSequential1
End Class
<StructLayoutAttribute(LayoutKind.Sequential)> Class MyTypeSequential2
Public Shared Sub Main()
Try
' Create an instance of MyTypeSequential1.
Dim myObj1 As New MyTypeSequential1()
Dim myTypeObj1 As Type = myObj1.GetType()
' Check for and display the SequentialLayout attribute.
Console.WriteLine(ControlChars.Cr + "The object myObj1 has IsLayoutSequential: {0}.", myObj1.GetType().IsLayoutSequential.ToString())
' Create an instance of MyTypeSequential2.
Dim myObj2 As New MyTypeSequential2()
Dim myTypeObj2 As Type = myObj2.GetType()
' Check for and display the SequentialLayout attribute.
Console.WriteLine(ControlChars.Cr + "The object myObj2 has IsLayoutSequential: {0}.", myObj2.GetType().IsLayoutSequential.ToString())
Catch e As Exception
Console.WriteLine(ControlChars.Cr + "An exception occurred: {0}", e.Message.ToString())
End Try
End Sub
End Class
Hinweise
Diese Eigenschaft wird als Komfort bereitgestellt. Alternativ können Sie den TypeAttributes.LayoutMask Enumerationswert verwenden, um die Typlayoutattribute auszuwählen und dann zu testen, ob TypeAttributes.SequentialLayout festgelegt ist. Die TypeAttributes.AutoLayoutWerte und TypeAttributes.ExplicitLayoutTypeAttributes.SequentialLayout Enumerationswerte geben an, wie die Felder des Typs im Arbeitsspeicher angeordnet werden.
Bei dynamischen Typen können Sie angeben TypeAttributes.SequentialLayout , wann Sie den Typ erstellen. Wenden Sie im Code das StructLayoutAttribute Attribut mit dem LayoutKind.Sequential Enumerationswert auf den Typ an, um anzugeben, dass das Layout sequenziell ist.
Hinweis
Sie können die GetCustomAttributes Methode nicht verwenden, um zu bestimmen, ob die StructLayoutAttribute Methode auf einen Typ angewendet wurde.
Weitere Informationen finden Sie in Abschnitt 9.1.2 der Spezifikation für die Cli-Dokumentation (Common Language Infrastructure), "Partition II: Metadata Definition and Semantics".
Wenn der aktuelle typ einen konstruierten generischen Type Typ darstellt, gilt diese Eigenschaft für die generische Typdefinition, aus der der Typ erstellt wurde. Wenn beispielsweise der aktuelle Type Wert (MyGenericType(Of Integer) in Visual Basic) darstellt MyGenericType<int> , wird der Wert dieser Eigenschaft durch MyGenericType<T>bestimmt.
Wenn der aktuelle Parameter in der Definition eines generischen Typs oder einer generischen Type Methode darstellt, gibt diese Eigenschaft immer zurück false.