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類別,這也是在程式碼範例中,針對StructLayoutAttributeIt 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表示的類型參數的泛型類型或泛型方法定義中這個屬性一律傳回falseIf the current Type represents a type parameter in the definition of a generic type or generic method, this property always returns false.

適用於

另請參閱