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
Атрибуты

Поля

AggressiveInlining 256

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

AggressiveOptimization 512

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

Используйте этот атрибут, если при выполнении неоптимизированной версии метода нежелательные последствия, например, что приводит к слишком большим затратам или выделению дополнительной памяти.

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

ForwardRef 16

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

InternalCall 4096

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

NoInlining 8

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

NoOptimization 64

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

PreserveSig 128

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

SecurityMitigations 1024

Этот элемент зарезервирован для использования в будущем. Он появился в .NET Framework 4.8.

Synchronized 32

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

Unmanaged 4

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

Комментарии

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

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

Примечание

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

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