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
- Наследование
- Атрибуты
Поля
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
, не рекомендуется для открытых типов, так как код, отличный от собственного, может принимать блокировки для открытых типов и экземпляров. Это может привести к взаимоблокировкам или другим проблемам синхронизации.
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по