MethodImplOptions Перечисление

Определение

Указывает константы, определяющие сведения о реализации метода.

Это перечисление поддерживает побитовую комбинацию значений его членов.

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
Наследование
MethodImplOptions
Атрибуты

Поля

Имя Значение Описание
Unmanaged 4

Метод реализуется в неуправляемом коде.

NoInlining 8

Метод нельзя встраить. Встраивание — это оптимизация, с помощью которой вызов метода заменяется текстом метода.

ForwardRef 16

Метод объявлен, но его реализация предоставляется в другом месте.

Synchronized 32

Метод может выполняться только одним потоком за раз. Статические методы блокируют тип, а методы экземпляра блокируются на экземпляре. Только один поток может выполняться в любой из функций экземпляра, и только один поток может выполняться в любой из статических функций класса.

NoOptimization 64

Метод не оптимизирован компилятором JIT или машинным кодом (см. Ngen.exe) при отладке возможных проблем создания кода.

PreserveSig 128

Подпись метода экспортируется точно так же, как объявлена.

AggressiveInlining 256

Если это возможно, метод должен быть вложен.

Необязательное использование этого атрибута может снизить производительность. Атрибут может привести к обнаружению ограничений реализации, что приведет к замедлению создания кода. Всегда измеряйте производительность, чтобы обеспечить применение этого атрибута.

AggressiveOptimization 512

Метод содержит код, который всегда должен быть оптимизирован для производительности.

Это редко подходит для использования этого атрибута. Методы, применяемые к этому атрибуту, обходят первый уровень многоуровневой компиляции и поэтому не используют оптимизации, основанные на многоуровневой компиляции . Эти оптимизации включают динамические PGO и оптимизации на основе инициализированных классов. Использование этого атрибута также может увеличить использование памяти. Всегда измеряйте производительность, чтобы обеспечить применение этого атрибута.

SecurityMitigations 1024

Этот элемент зарезервирован для дальнейшего использования. Она появилась в .NET Framework 4.8.

InternalCall 4096

Вызов является внутренним, то есть вызывает метод, реализованный в среде CLR.

Async 8192

Комментарии

Это перечисление используется с атрибутом MethodImplAttribute .

Можно указать несколько MethodImplOptions значений с помощью побитового оператора OR.

Note

Блокировка экземпляра или типа, как и Synchronized флаг, не рекомендуется для общедоступных типов, так как код, отличный от собственного, может принимать блокировки на общедоступные типы и экземпляры. Это может привести к взаимоблокировкам или другим проблемам синхронизации.

Применяется к