Lire en anglais

Partager via


Type.IsExplicitLayout Propriété

Définition

Obtient une valeur qui indique si les champs du type actuel sont placés aux offsets explicitement spécifiés.

C#
public bool IsExplicitLayout { get; }

Valeur de propriété

Boolean

true si la propriété Attributes du type actuel comprend ExplicitLayout ; sinon, false.

Implémente

Exemples

L’exemple suivant crée une instance d’un type et affiche la valeur de sa IsExplicitLayout propriété. Elle utilise la MySystemTime classe, qui est également dans l’exemple de code pour StructLayoutAttribute .

C#
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);
    }
}

Remarques

Cette propriété est fournie à titre de commodité. Vous pouvez également utiliser la TypeAttributes.LayoutMask valeur d’énumération pour sélectionner les attributs de disposition de type, puis tester si TypeAttributes.ExplicitLayout est défini. Les TypeAttributes.AutoLayout TypeAttributes.ExplicitLayout TypeAttributes.SequentialLayout valeurs d’énumération, et indiquent la façon dont les champs du type sont disposés en mémoire.

Pour les types dynamiques, vous pouvez spécifier TypeAttributes.ExplicitLayout quand vous créez le type. Dans le code, appliquez l' StructLayoutAttribute attribut avec la LayoutKind.Explicit valeur d’énumération au type, pour spécifier que les décalages auxquels les champs commencent sont spécifiés explicitement.

Notes

Vous ne pouvez pas utiliser la GetCustomAttributes méthode pour déterminer si StructLayoutAttribute a été appliqué à un type.

Si le actuel Type représente un type générique construit, cette propriété s’applique à la définition de type générique à partir de laquelle le type a été construit. par exemple, si le actuel Type représente MyGenericType<int> ( MyGenericType(Of Integer) dans Visual Basic), la valeur de cette propriété est déterminée par MyGenericType<T> .

Si le actuel Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique, cette propriété retourne toujours false .

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Voir aussi