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.Reflection
Imports System.ComponentModel
Imports System.Runtime.InteropServices

'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.AutoLayout、和列舉TypeAttributes.SequentialLayout值會指出類型欄位在記憶體中配置的方式。 TypeAttributes.ExplicitLayoutThe 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. 在程式碼中, StructLayoutAttributeLayoutKind.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.

適用於

另請參閱