MethodImplAttributes Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa flagi atrybutów implementacji metody.
To wyliczenie obsługuje bitową kombinację jego wartości składowych.
Ten interfejs API obsługuje infrastrukturę produktu i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu.
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
- Dziedziczenie
- Atrybuty
Pola
| Nazwa | Wartość | Opis |
|---|---|---|
| IL | 0 | Określa, że implementacja metody jest w Microsoft języku pośrednim (MSIL). |
| Managed | 0 | Określa, że metoda jest implementowana w kodzie zarządzanym. |
| Native | 1 | Określa, że implementacja metody jest natywna. |
| OPTIL | 2 | Określa, że implementacja metody jest w zoptymalizowanym języku pośrednim (OPTIL). |
| CodeTypeMask | 3 | Określa flagi dotyczące typu kodu. |
| Runtime | 3 | Określa, że implementacja metody jest dostarczana przez środowisko uruchomieniowe. |
| ManagedMask | 4 | Określa, czy metoda jest implementowana w kodzie zarządzanym, czy niezarządzanych. |
| Unmanaged | 4 | Określa, że metoda jest implementowana w kodzie niezarządzanych. |
| NoInlining | 8 | Określa, że nie można podlinkować metody. |
| ForwardRef | 16 | Określa, że metoda nie jest zdefiniowana. |
| Synchronized | 32 | Określa, że metoda jest jednowątkowa przez treść. Metody statyczne ( |
| NoOptimization | 64 | Określa, że metoda nie jest zoptymalizowana przez kompilator just in time (JIT) ani przez generowanie kodu natywnego (zobacz Ngen.exe) podczas debugowania możliwych problemów z generowaniem kodu. |
| PreserveSig | 128 | Określa, że podpis metody jest eksportowany dokładnie zgodnie z zadeklarowanym. |
| AggressiveInlining | 256 | Określa, że metoda powinna być wciśnięta wszędzie tam, gdzie to możliwe. |
| AggressiveOptimization | 512 | Określa, że metoda powinna być zoptymalizowana zawsze, gdy jest to możliwe. |
| SecurityMitigations | 1024 | Ten element członkowski jest zarezerwowany do użytku w przyszłości. Wprowadzono go w programie .NET Framework 4.8. |
| InternalCall | 4096 | Określa wywołanie wewnętrzne. |
| Async | 8192 | |
| MaxMethodImplVal | 65535 | Określa wartość sprawdzania zakresu. |
Uwagi
Atrybuty są łączone przy użyciu operacji bitowej OR w następujący sposób:
Maski implementacji kodu:
CodeTypeMaskILNativeOPTILRuntime
Maski zarządzane:
ManagedMaskUnmanagedManaged
Informacje o implementacji i maski międzyoperacyjne:
ForwardRefPreserveSigInternalCallSynchronizedNoInliningNoOptimizationMaxMethodImplValSecurityMitigations(dostępne od platformy .NET Framework 4.8).
Note
Blokowanie wystąpienia lub typu, podobnie jak w Synchronized przypadku flagi, nie jest zalecane w przypadku typów publicznych, ponieważ kod inny niż własny może przyjmować blokady dla typów publicznych i wystąpień. Może to spowodować zakleszczenia lub inne problemy z synchronizacją.