Поделиться через


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

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

Этот атрибут используется редко. Методы, применяемые к этому атрибуту, обходят первый уровень многоуровневой компиляции и, следовательно, не получают преимуществ от оптимизаций, основанных на многоуровневой компиляции. К этим оптимизациям относятся динамические 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 , не рекомендуется для открытых типов, так как код, отличный от собственного, может принимать блокировки для открытых типов и экземпляров. Это может привести к взаимоблокировкам или другим проблемам синхронизации.

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