Type.IsExplicitLayout Type.IsExplicitLayout Type.IsExplicitLayout Type.IsExplicitLayout Property

定義

現在の型のフィールドが、明示的に指定したオフセット位置に配置されているかどうかを示す値を取得します。Gets a value indicating whether the fields of the current type are laid out at explicitly specified offsets.

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

プロパティ値

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

実装

次の例では、型のインスタンスを作成しの値を表示します。 そのIsExplicitLayoutプロパティ。The following example creates an instance of a type and displays the value of its IsExplicitLayout property. 使用して、MySystemTimeクラスのコード例でもはStructLayoutAttributeします。It uses the MySystemTime class, which is also in the code example for 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);
    }
}
Imports System
Imports System.Reflection
Imports System.ComponentModel
Imports System.Runtime.InteropServices
Imports Microsoft.VisualBasic

'Class to test for the ExplicitLayout property.
   <StructLayout(LayoutKind.Explicit, Size := 16, CharSet := CharSet.Ansi)>  _
   Public Class MySystemTime
      <FieldOffset(0)> Public wYear As Short
      <FieldOffset(2)> Public wMonth As Short
      <FieldOffset(4)> Public wDayOfWeek As Short
      <FieldOffset(6)> Public wDay As Short
      <FieldOffset(8)> Public wHour As Short
      <FieldOffset(10)> Public wMinute As Short
      <FieldOffset(12)> Public wSecond As Short
      <FieldOffset(14)> Public wMilliseconds As Short
   End Class 

Public Class Program
    Public Shared Sub Main()
        'Create an instance of type using the GetType method.
        Dim t As Type = GetType(MySystemTime)
        ' Get and display the IsExplicitLayout property.
        Console.WriteLine(vbCrLf & "IsExplicitLayout for MySystemTime is {0}.", _
            t.IsExplicitLayout)
    End Sub
End Class

注釈

このプロパティは、便利なように提供されます。This property is provided as a convenience. また、使用することができます、TypeAttributes.LayoutMaskレイアウト属性の型、およびテストをかどうかを選択する列挙値TypeAttributes.ExplicitLayout設定されます。Alternatively, you can use the TypeAttributes.LayoutMask enumeration value to select the type layout attributes, and then test whether TypeAttributes.ExplicitLayout 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.ExplicitLayout型を作成する場合。For dynamic types, you can specify TypeAttributes.ExplicitLayout when you create the type. コードでは、適用、StructLayoutAttribute属性、LayoutKind.Explicit型にフィールドを開始するオフセットが明示的に指定されているかを指定する列挙値。In code, apply the StructLayoutAttribute attribute with the LayoutKind.Explicit enumeration value to the type, to specify that the offsets at which the fields start are specified explicitly.

注意

使用することはできません、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<int>(MyGenericType(Of Integer) Visual Basic で)、このプロパティの値はによって決まります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.

適用対象

こちらもご覧ください