Ler em inglês

Partilhar via


Type.StructLayoutAttribute Propriedade

Definição

Obtém um StructLayoutAttribute que descreve o layout do tipo atual.

C#
public virtual System.Runtime.InteropServices.StructLayoutAttribute? StructLayoutAttribute { get; }
C#
public virtual System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get; }

Valor da propriedade

StructLayoutAttribute

Obtém um StructLayoutAttribute que descreve os recursos de layout bruto do tipo atual.

Exceções

O método chamado não é suportado na classe base.

Exemplos

O exemplo de código a seguir define primeiro uma classe, uma estrutura e uma estrutura com atributos de layout especiais (as estruturas são aninhadas dentro da classe). Em seguida, o exemplo usa a StructLayoutAttribute propriedade para obter um StructLayoutAttribute para cada tipo e exibe as propriedades dos atributos.

C#
using System;
using System.Runtime.InteropServices;

public class Example
{
    public static void Main()
    {
        DisplayLayoutAttribute(typeof(Example).StructLayoutAttribute);
        DisplayLayoutAttribute(typeof(Test1).StructLayoutAttribute);
        DisplayLayoutAttribute(typeof(Test2).StructLayoutAttribute);
    }

    private static void DisplayLayoutAttribute(StructLayoutAttribute sla)
    {
        Console.WriteLine("\r\nCharSet: "+sla.CharSet.ToString()+"\r\n   Pack: "+sla.Pack.ToString()+"\r\n   Size: "+sla.Size.ToString()+"\r\n  Value: "+sla.Value.ToString());
    }
    public struct Test1
    {
        public byte B1;
        public short S;
        public byte B2;
    }
    [StructLayout(LayoutKind.Explicit, Pack=1)] public struct Test2
    {
        [FieldOffset(0)] public byte B1;
        [FieldOffset(1)] public short S;
        [FieldOffset(3)] public byte B2;
    }
}

Comentários

StructLayoutAttribute Não é retornado pelo GetCustomAttributes método. Em vez disso, use essa propriedade para obtê-la.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 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

Confira também