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

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