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

Определение

Задает флаги для атрибутов реализации метода.

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

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

public enum class MethodImplAttributes
public enum MethodImplAttributes
[System.Flags]
[System.Serializable]
public enum MethodImplAttributes
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum MethodImplAttributes
type MethodImplAttributes = 
[<System.Flags>]
[<System.Serializable>]
type MethodImplAttributes = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MethodImplAttributes = 
Public Enum MethodImplAttributes
Наследование
MethodImplAttributes
Атрибуты

Поля

Имя Значение Описание
IL 0

Указывает, что реализация метода находится в Microsoft промежуточном языке (MSIL).

Managed 0

Указывает, что метод реализуется в управляемом коде.

Native 1

Указывает, что реализация метода является собственной.

OPTIL 2

Указывает, что реализация метода находится на оптимизированном промежуточном языке (OPTIL).

CodeTypeMask 3

Задает флаги о типе кода.

Runtime 3

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

ManagedMask 4

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

Unmanaged 4

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

NoInlining 8

Указывает, что метод не может быть вложен.

ForwardRef 16

Указывает, что метод не определен.

Synchronized 32

Указывает, что метод является однопоточным по тексту. Статические методы (Shared в Visual Basic) блокируют тип, а методы экземпляра блокируются на экземпляре. Для этого можно также использовать инструкцию C# lock или инструкцию Visual Basic SyncLock.

NoOptimization 64

Указывает, что метод не оптимизирован компилятором JIT или машинным созданием кода (см. Ngen.exe) при отладке возможных проблем создания кода.

PreserveSig 128

Указывает, что подпись метода экспортируется точно так же, как объявлена.

AggressiveInlining 256

Указывает, что метод следует встраивается везде, где это возможно.

AggressiveOptimization 512

Указывает, что метод должен быть оптимизирован по возможности.

SecurityMitigations 1024

Этот элемент зарезервирован для дальнейшего использования. Она появилась в .NET Framework 4.8.

InternalCall 4096

Указывает внутренний вызов.

Async 8192
MaxMethodImplVal 65535

Указывает значение проверки диапазона.

Комментарии

Атрибуты объединяются с помощью побитовой операции OR следующим образом:

Маски реализации кода:

  • CodeTypeMask

  • IL

  • Native

  • OPTIL

  • Runtime

Управляемые маски:

  • ManagedMask

  • Unmanaged

  • Managed

Сведения о реализации и маски взаимодействия:

  • ForwardRef

  • PreserveSig

  • InternalCall

  • Synchronized

  • NoInlining

  • NoOptimization

  • MaxMethodImplVal

  • SecurityMitigations (доступно начиная с .NET Framework 4.8.)

Замечание

Блокировка экземпляра или типа, как и Synchronized флаг, не рекомендуется для общедоступных типов, так как код, отличный от собственного, может принимать блокировки на общедоступные типы и экземпляры. Это может привести к взаимоблокировкам или другим проблемам синхронизации.

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

См. также раздел