Прочитать на английском

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


MethodImplOptions Перечисление

Определение

Указывает константы, определяющие сведения о реализации метода.

Это перечисление поддерживает побитовую комбинацию значений его членов.

C#
[System.Flags]
public enum MethodImplOptions
C#
[System.Flags]
[System.Serializable]
public enum MethodImplOptions
C#
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
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 , не рекомендуется для открытых типов, так как код, отличный от собственного, может принимать блокировки для открытых типов и экземпляров. Это может привести к взаимоблокировкам или другим проблемам синхронизации.

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

Продукт Версии
.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