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


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
Атрибуты

Поля

Имя Значение Описание
AggressiveInlining 256

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

AggressiveOptimization 512

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

CodeTypeMask 3

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

ForwardRef 16

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

IL 0

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

InternalCall 4096

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

Managed 0

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

ManagedMask 4

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

MaxMethodImplVal 65535

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

Native 1

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

NoInlining 8

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

NoOptimization 64

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

OPTIL 2

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

PreserveSig 128

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

Runtime 3

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

SecurityMitigations 1024

Этот элемент зарезервирован для использования в будущем. Он появился в .NET Framework 4.8.

Synchronized 32

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

Unmanaged 4

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

Комментарии

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

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

  • CodeTypeMask

  • IL

  • Native

  • OPTIL

  • Runtime

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

  • ManagedMask

  • Unmanaged

  • Managed

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

  • ForwardRef

  • PreserveSig

  • InternalCall

  • Synchronized

  • NoInlining

  • NoOptimization

  • MaxMethodImplVal

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

Примечание

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

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

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