Sdílet prostřednictvím


Type.IsExplicitLayout Vlastnost

Definice

Získá hodnotu určující, zda jsou pole aktuálního typu rozložena s explicitně zadanými posuny.

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

Hodnota vlastnosti

Boolean

true pokud Attributes vlastnost aktuálního typu zahrnuje ExplicitLayout ; jinak false .

Implementuje

Příklady

Následující příklad vytvoří instanci typu a zobrazí hodnotu jeho IsExplicitLayout vlastnosti. Používá třídu MySystemTime , která je také v příkladu kódu pro 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

Poznámky

Tato vlastnost je k dispozici jako pohodlí. Případně můžete použít hodnotu výčtu k výběru atributů rozložení typu a pak TypeAttributes.LayoutMask otestovat, zda TypeAttributes.ExplicitLayout je nastavena. Hodnoty výčtu , a označují způsob, jakým jsou pole typu TypeAttributes.AutoLayout TypeAttributes.ExplicitLayout TypeAttributes.SequentialLayout rozložena do paměti.

Pro dynamické typy můžete určit TypeAttributes.ExplicitLayout při vytváření typu. V kódu použijte atribut s hodnotou výčtu na typ a určete, že posuny, ve kterých pole začínají, jsou StructLayoutAttribute LayoutKind.Explicit zadány explicitně.

Poznámka

Metodu nelze GetCustomAttributes použít k určení, zda byl použit na StructLayoutAttribute typ.

Pokud aktuální představuje vytvořený obecný typ, tato vlastnost se vztahuje na definici obecného typu, ze Type kterého byl typ vytvořen. Pokud například aktuální představuje ( v Visual Basic), je hodnota této vlastnosti Type určena MyGenericType<int> MyGenericType(Of Integer) MyGenericType<T> hodnotou .

Pokud aktuální představuje parametr typu v definici obecného typu nebo Type obecné metody, vrátí tato vlastnost vždy hodnotu false .

Platí pro

Viz také