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
, не рекомендуется для открытых типов, так как код, отличный от собственного, может принимать блокировки для открытых типов и экземпляров. Это может привести к взаимоблокировкам или другим проблемам синхронизации.
Продукт | Версии |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1 |
UWP | 10.0 |
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: