Type.IsAutoLayout プロパティ


現在の型のフィールドが、共通言語ランタイムによって自動的に配置されているかどうかを示す値を取得します。Gets a value indicating whether the fields of the current type are laid out automatically by the common language runtime.

 property bool IsAutoLayout { bool get(); };
public bool IsAutoLayout { get; }
member this.IsAutoLayout : bool
Public ReadOnly Property IsAutoLayout As Boolean


現在の型の true プロパティに Attributes が含まれる場合は AutoLayout。それ以外の場合は falsetrue if the Attributes property of the current type includes AutoLayout; otherwise, false.


次の例では、型のインスタンスを作成しIsAutoLayout 、プロパティを表示します。The following example creates an instance of the type and displays the IsAutoLayout property.

#using <System.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::ComponentModel;
using namespace System::Runtime::InteropServices;

// The MyDemoAttribute class is selected as AutoLayout.

public ref class MyDemoAttribute{};

void MyAutoLayoutMethod( String^ typeName )
      // Create an instance of the Type class using the GetType method.
      Type^ myType = Type::GetType( typeName );
      // Get and display the IsAutoLayout property of the
      // MyDemoAttribute instance.
      Console::WriteLine( "\nThe AutoLayout property for the MyDemoAttribute is {0}.", myType->IsAutoLayout );
   catch ( Exception^ e ) 
      Console::WriteLine( "\nAn exception occurred: {0}.", e->Message );


int main()
   MyAutoLayoutMethod( "MyDemoAttribute" );

using System;
using System.Runtime.InteropServices;

// The Demo class is attributed as AutoLayout.
public class Demo

public class Example
    public static void Main()
        // Create an instance of the Type class using the GetType method.
        Type  myType=typeof(Demo);
        // Get and display the IsAutoLayout property of the 
        // Demoinstance.
        Console.WriteLine("\nThe AutoLayout property for the Demo class is {0}.",
Imports System.Runtime.InteropServices

' The Demo class is has the AutoLayout attribute.
<StructLayoutAttribute(LayoutKind.Auto)> _
Public Class Demo
End Class 

Public Class Example
    Public Shared Sub Main()
        ' Get the Type object for the Demo class.
        Dim myType As Type = GetType(Demo)
        ' Get and display the IsAutoLayout property of the 
        ' Demo class.
        Console.WriteLine("The AutoLayout property for the Demo class is '{0}'.", _
    End Sub 
End Class 


このプロパティは便宜上提供されています。This property is provided as a convenience. または、 TypeAttributes.LayoutMask列挙値を使用して型レイアウト属性を選択し、が設定さTypeAttributes.AutoLayoutれているかどうかをテストします。Alternatively, you can use the TypeAttributes.LayoutMask enumeration value to select the type layout attributes, and then test whether TypeAttributes.AutoLayout is set. TypeAttributes.AutoLayoutTypeAttributes.ExplicitLayoutおよびTypeAttributes.SequentialLayoutの各列挙値は、型のフィールドをメモリにレイアウトする方法を示します。The TypeAttributes.AutoLayout,TypeAttributes.ExplicitLayout, and TypeAttributes.SequentialLayout enumeration values indicate the way the fields of the type are laid out in memory.

動的な型の場合は、 TypeAttributes.AutoLayout型をいつ作成するかを指定できます。For dynamic types, you can specify TypeAttributes.AutoLayout when you create the type. コードで、 LayoutKind.Auto列挙値StructLayoutAttributeを含む属性を型に適用して、ランタイムがクラスをレイアウトするための適切な方法を決定できるようにします。In code, apply the StructLayoutAttribute attribute with the LayoutKind.Auto enumeration value to the type, to let the runtime determine the appropriate way to lay out the class.


GetCustomAttributesメソッドを使用して、 StructLayoutAttributeが型に適用されているかどうかを判断することはできません。You cannot use the GetCustomAttributes method to determine whether the StructLayoutAttribute has been applied to a type.

現在Typeのが構築ジェネリック型を表している場合、このプロパティは、型が構築された元のジェネリック型定義に適用されます。If the current Type represents a constructed generic type, this property applies to the generic type definition from which the type was constructed. たとえば、現在Typeのが (MyGenericType(Of Integer) Visual Basic MyGenericType<int> ) を表している場合、このプロパティの値はによって決定されます。MyGenericType<T>.For example, if the current Type represents MyGenericType<int> (MyGenericType(Of Integer) in Visual Basic), the value of this property is determined by MyGenericType<T>.

現在Typeのがジェネリック型またはジェネリックメソッドの定義の型パラメーターを表している場合、このプロパティfalseは常にを返します。If the current Type represents a type parameter in the definition of a generic type or generic method, this property always returns false.