MethodImplOptions Enumeração

Definição

Especifica constantes que definem os detalhes de como um método é implementado.

Essa enumeração dá suporte a uma combinação bit a bit dos valores de membro.

public enum class MethodImplOptions
[System.Flags]
public enum MethodImplOptions
[System.Flags]
[System.Serializable]
public enum MethodImplOptions
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum MethodImplOptions
[<System.Flags>]
type MethodImplOptions = 
[<System.Flags>]
[<System.Serializable>]
type MethodImplOptions = 
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MethodImplOptions = 
Public Enum MethodImplOptions
Herança
MethodImplOptions
Atributos

Campos

AggressiveInlining 256

O método deve ser embutido, se possível.

O uso desnecessário desse atributo pode reduzir o desempenho. O atributo pode fazer com que os limites de implementação sejam encontrados, o que resultará em um código gerado mais lento. Sempre meça o desempenho para garantir que seja útil aplicar esse atributo.

AggressiveOptimization 512

O método contém código que sempre deve ser otimizado para desempenho.

Raramente é apropriado usar esse atributo. Os métodos que aplicam esse atributo ignoram a primeira camada de compilação em camadas e, portanto, não se beneficiam de otimizações que dependem da compilação em camadas. Essas otimizações incluem PGO dinâmico e otimizações com base em classes inicializadas. O uso desse atributo também pode aumentar o uso de memória. Sempre meça o desempenho para garantir que seja útil aplicar esse atributo.

ForwardRef 16

O método é declarado, mas sua implementação é fornecida em outro lugar.

InternalCall 4096

A chamada é interna, ou seja, ela chama um método implementado no Common Language Runtime.

NoInlining 8

O método não pode ser embutido. Inlining é uma otimização pela qual uma chamada de método é substituída pelo corpo do método.

NoOptimization 64

O método não é otimizado pelo compilador JIT (Just-In-Time) nem pela geração de código nativo (consulte Ngen.exe) ao depurar possíveis problemas de geração de código.

PreserveSig 128

A assinatura do método será exportada exatamente como declarado.

SecurityMitigations 1024

Este membro é reservado para uso futuro. Introduzido no .NET Framework 4.8.

Synchronized 32

O método pode ser executado por um único thread por vez. Métodos estáticos são bloqueados no tipo, enquanto métodos de instância são bloqueados na instância. Apenas um thread pode ser executado em uma das funções de instância e apenas um thread pode ser executado em uma das funções estáticas de uma classe.

Unmanaged 4

O método é implementado em um código não gerenciado.

Comentários

Essa enumeração é usada com o MethodImplAttribute atributo .

Você pode especificar vários MethodImplOptions valores usando o operador OR bit a bit.

Observação

O bloqueio na instância ou no tipo, como com o Synchronized sinalizador , não é recomendado para tipos públicos, pois o código diferente do seu pode ter bloqueios em tipos e instâncias públicas. Isso pode causar deadlocks ou outros problemas de sincronização.

Aplica-se a