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 angelegt werden, 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 SequentialLayout umfasst; andernfalls false
.
Implementiert
Beispiele
Im folgenden Beispiel wird eine Instanz einer Klasse erstellt, für die der Enumerationswert in der -Klasse festgelegt wurde, überprüft die -Eigenschaft LayoutKind.Sequential und zeigt das Ergebnis StructLayoutAttribute IsLayoutSequential an.
#using <System.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::ComponentModel;
using namespace System::Runtime::InteropServices;
ref class MyTypeSequential1{};
[StructLayoutAttribute(LayoutKind::Sequential)]
ref class MyTypeSequential2{};
int main()
{
try
{
// Create an instance of myTypeSeq1.
MyTypeSequential1^ myObj1 = gcnew MyTypeSequential1;
// 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 = gcnew MyTypeSequential2;
// 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 );
}
}
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);
}
}
}
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 der Einfachheit halber bereitgestellt. Alternativ können Sie den -Enumerationswert verwenden, um die Typlayoutattribute auszuwählen und dann zu TypeAttributes.LayoutMask testen, ob TypeAttributes.SequentialLayout festgelegt ist. Die TypeAttributes.AutoLayout Enumerationswerte , und geben an, wie die Felder des Typs TypeAttributes.ExplicitLayout TypeAttributes.SequentialLayout im Arbeitsspeicher angelegt werden.
Für dynamische 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 -Methode GetCustomAttributes nicht verwenden, um zu bestimmen, StructLayoutAttribute ob auf einen Typ angewendet wurde.
Weitere Informationen finden Sie in Abschnitt 9.1.2 der Spezifikation für die dokumentation Common Language Infrastructure (CLI) "Partition II: Metadata Definition and Semantics". Die Dokumentation ist online verfügbar. Sie finden sie unter ECMA C# and Common Language Infrastructure Standards (Standards von ECMA C# und Common Language Infrastructure) auf MSDN und Standard ECMA-335 - Common Language Infrastructure (CLI) (Standard ECMA-335 – Common Language Infrastructure (CLI)) auf der Ecma International-Website.
Wenn der aktuelle einen konstruierten generischen Typ darstellt, gilt diese Eigenschaft für die generische Typdefinition, aus der Type der Typ erstellt wurde. Wenn der aktuelle z. B. darstellt ( in Visual Basic), wird der Wert Type MyGenericType<int>
dieser Eigenschaft durch MyGenericType(Of Integer)
MyGenericType<T>
bestimmt.
Wenn der aktuelle einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, gibt diese Type Eigenschaft immer false
zurück.