MethodImplAttributes MethodImplAttributes MethodImplAttributes MethodImplAttributes Enum

Определение

Задает флаги для атрибутов реализации метода.Specifies flags for the attributes of a method implementation.

Это перечисление имеет атрибут FlagsAttribute, который разрешает побитовое сочетание значений его элементов.

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

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

Поля

AggressiveInlining AggressiveInlining AggressiveInlining AggressiveInlining 256

Указывает, что метод должен по возможности выполняться как встроенный.Specifies that the method should be inlined wherever possible.

AggressiveOptimization AggressiveOptimization AggressiveOptimization AggressiveOptimization 512

Указывает, что метод необходимо по возможности оптимизировать.Specifies that the method should be optimized whenever possible.

CodeTypeMask CodeTypeMask CodeTypeMask CodeTypeMask 3

Задает флаги для типа кода.Specifies flags about code type.

ForwardRef ForwardRef ForwardRef ForwardRef 16

Указывает, что метод не определен.Specifies that the method is not defined.

IL IL IL IL 0

Указывает, что метод реализуется на языке MSIL.Specifies that the method implementation is in Microsoft intermediate language (MSIL).

InternalCall InternalCall InternalCall InternalCall 4096

Указывает внутренний вызов.Specifies an internal call.

Managed Managed Managed Managed 0

Указывает, что метод реализуется в управляемом коде.Specifies that the method is implemented in managed code.

ManagedMask ManagedMask ManagedMask ManagedMask 4

Указывает, реализуется ли метод в управляемом или неуправляемом коде.Specifies whether the method is implemented in managed or unmanaged code.

MaxMethodImplVal MaxMethodImplVal MaxMethodImplVal MaxMethodImplVal 65535

Указывает значение диапазона проверки.Specifies a range check value.

Native Native Native Native 1

Указывает, что для метода используется стандартная реализация.Specifies that the method implementation is native.

NoInlining NoInlining NoInlining NoInlining 8

Указывает, что метод нельзя выполнять как встроенный.Specifies that the method cannot be inlined.

NoOptimization NoOptimization NoOptimization NoOptimization 64

Указывает, что метод не оптимизирован JIT-компилятором или службой генерирования машинного кода (см. Ngen.exe) при отладке потенциальных проблем с генерированием кода.Specifies that the method is not optimized by the just-in-time (JIT) compiler or by native code generation (see Ngen.exe) when debugging possible code generation problems.

OPTIL OPTIL OPTIL OPTIL 2

Указывает, что метод реализуется на языке OPIL.Specifies that the method implementation is in Optimized Intermediate Language (OPTIL).

PreserveSig PreserveSig PreserveSig PreserveSig 128

Указывает, что подпись метода должна экспортироваться в точном соответствии с объявленной.Specifies that the method signature is exported exactly as declared.

Runtime Runtime Runtime Runtime 3

Указывает, что реализация метода предоставляется средой выполнения.Specifies that the method implementation is provided by the runtime.

SecurityMitigations SecurityMitigations SecurityMitigations SecurityMitigations 1024

Указывает, что JIT-компилятор должен искать атрибуты устранения рисков безопасности, такие как определяемый пользователем System.Runtime.CompilerServices.SecurityMitigationsAttribute.Specifies that the JIT compiler should look for security mitigation attributes, such as the user-defined System.Runtime.CompilerServices.SecurityMitigationsAttribute. В случае обнаружения JIT-компилятор применяет все соответствующие варианты устранения рисков безопасности.If found, the JIT compiler applies any related security mitigations. Доступно начиная с .NET Framework 4.8.Available starting with .NET Framework 4.8.

Synchronized Synchronized Synchronized Synchronized 32

Указывает, что метод полностью выполняется как однопотоковый.Specifies that the method is single-threaded through the body. Статические методы (Shared в Visual Basic) выполняют блокировку по типу, а методы экземпляра — по экземпляру.Static methods (Shared in Visual Basic) lock on the type, whereas instance methods lock on the instance. Для этой цели можно также использовать оператор lock в C# или оператор SyncLock в Visual Basic.You can also use the C# lock statement or the Visual Basic SyncLock statement for this purpose.

Unmanaged Unmanaged Unmanaged Unmanaged 4

Указывает, что метод реализуется в неуправляемом коде.Specifies that the method is implemented in unmanaged code.

Комментарии

Атрибуты комбинируются с помощью побитовой операции OR следующим образом:The attributes are combined using the bitwise OR operation as follows:

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

  • CodeTypeMask

  • IL

  • Native

  • OPTIL

  • Runtime

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

  • ManagedMask

  • Unmanaged

  • Managed

Сведения о реализации и маски взаимодействия:Implementation information and interop masks:

  • ForwardRef

  • PreserveSig

  • InternalCall

  • Synchronized

  • NoInlining

  • NoOptimization

  • MaxMethodImplVal

  • SecurityMitigations(Доступно, начиная с .NET Framework 4,8).SecurityMitigations (Available starting with .NET Framework 4.8.)

Примечание

Блокировка экземпляра или типа, как Synchronized и флаг, не рекомендуется для открытых типов, так как код, отличный от собственного, может принимать блокировки на открытые типы и экземпляры.Locking on the instance or on the type, as with the Synchronized flag, is not recommended for public types, because code other than your own can take locks on public types and instances. Это может привести к взаимоблокировкам или другим проблемам синхронизации.This might cause deadlocks or other synchronization problems.

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

Дополнительно