Ler em inglês

Compartilhar via


Type.IsLayoutSequential Propriedade

Definição

Obtém um valor que indica se os campos do tipo atual são apresentados em sequência, na ordem em que foram definidos ou emitidos para os metadados.

C#
public bool IsLayoutSequential { get; }

Valor da propriedade

Boolean

true se a Attributes propriedade do tipo atual incluir ; caso SequentialLayout contrário, false .

Implementações

Exemplos

O exemplo a seguir cria uma instância de uma classe para a qual o valor de enumeração na classe foi definido, verifica a propriedade e LayoutKind.Sequential StructLayoutAttribute exibe o IsLayoutSequential resultado.

C#
using System;
using System.Reflection;
using System.ComponentModel;
using System.Runtime.InteropServices;
class MyTypeSequential1
{
}
[StructLayoutAttribute(LayoutKind.Sequential)]
class MyTypeSequential2
{
    public static void Main(string []args)
    {
        try
        {
            // Create an instance of myTypeSeq1.
            MyTypeSequential1 myObj1 = new MyTypeSequential1();
            Type myTypeObj1 = myObj1.GetType();
            // Check for and display the SequentialLayout attribute.
            Console.WriteLine("\nThe object myObj1 has IsLayoutSequential: {0}.", myObj1.GetType().IsLayoutSequential);
            // Create an instance of 'myTypeSeq2' class.
            MyTypeSequential2 myObj2 = new MyTypeSequential2();
            Type myTypeObj2 = myObj2.GetType();
            // Check for and display the SequentialLayout attribute.
            Console.WriteLine("\nThe object myObj2 has IsLayoutSequential: {0}.", myObj2.GetType().IsLayoutSequential);
        }
        catch(Exception e)
        {
            Console.WriteLine("\nAn exception occurred: {0}", e.Message);
        }
    }
}

Comentários

Essa propriedade é fornecida como uma conveniência. Como alternativa, você pode usar o valor de enumeração para selecionar os atributos de layout de tipo e, em TypeAttributes.LayoutMask seguida, testar se TypeAttributes.SequentialLayout está definido. Os valores de enumeração , e indicam a maneira como os TypeAttributes.AutoLayout campos do tipo são colocados na TypeAttributes.ExplicitLayout TypeAttributes.SequentialLayout memória.

Para tipos dinâmicos, você pode TypeAttributes.SequentialLayout especificar ao criar o tipo. No código, aplique o StructLayoutAttribute atributo com o valor de enumeração ao tipo , para especificar que o layout é LayoutKind.Sequential sequencial.

Observação

Não é possível usar GetCustomAttributes o método para determinar se o foi aplicado a um StructLayoutAttribute tipo.

Para obter mais informações, consulte a seção 9.1.2 da especificação da documentação da CLI (Common Language Infrastructure), "Partição II: definição de metadados e semântica". A documentação está disponível online; confira ECMA C# and Common Language Infrastructure Standards, no MSDN, e Standard ECMA-335 - Common Language Infrastructure (CLI), no site internacional da Ecma.

Caso o Type atual represente um tipo genérico construído, esta propriedade aplica-se à definição de tipo genérico a partir da qual o tipo foi construído. Por exemplo, se o Type atual representar MyGenericType<int> (MyGenericType(Of Integer) no Visual Basic), o valor dessa propriedade será determinado por MyGenericType<T>.

Caso o Type atual represente um parâmetro de tipo na definição de um tipo genérico ou um método genérico, esta propriedade sempre retorna false.

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 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

Confira também