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


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 , не рекомендуется для открытых типов, так как код, отличный от собственного, может принимать блокировки для открытых типов и экземпляров. Это может привести к взаимоблокировкам или другим проблемам синхронизации.

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

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