MethodImplOptions Wyliczenie

Definicja

Określa stałe definiujące szczegóły implementacji metody.

To wyliczenie obsługuje bitową kombinację jego wartości składowych.

public enum class MethodImplOptions
[System.Flags]
public enum MethodImplOptions
[System.Flags]
[System.Serializable]
public enum MethodImplOptions
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum MethodImplOptions
[<System.Flags>]
type MethodImplOptions = 
[<System.Flags>]
[<System.Serializable>]
type MethodImplOptions = 
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MethodImplOptions = 
Public Enum MethodImplOptions
Dziedziczenie
MethodImplOptions
Atrybuty

Pola

AggressiveInlining 256

Jeśli jest to możliwe, metoda powinna zostać podkreślona.

Niepotrzebne użycie tego atrybutu może zmniejszyć wydajność. Atrybut może spowodować napotkanie limitów implementacji, co spowoduje wolniejsze wygenerowanie kodu. Zawsze mierz wydajność, aby upewnić się, że warto zastosować ten atrybut.

AggressiveOptimization 512

Metoda zawiera kod, który zawsze powinien być zoptymalizowany pod kątem wydajności.

Rzadko jest to odpowiednie do użycia tego atrybutu. Metody, które stosują ten atrybut, pomijają pierwszą warstwę kompilacji warstwowej i dlatego nie korzystają z optymalizacji opartych na kompilacji warstwowej. Te optymalizacje obejmują dynamiczne PGO i optymalizacje na podstawie zainicjowanych klas. Użycie tego atrybutu może również zwiększyć użycie pamięci. Zawsze mierz wydajność, aby upewnić się, że warto zastosować ten atrybut.

ForwardRef 16

Metoda jest zadeklarowana, ale jej implementacja jest udostępniana gdzie indziej.

InternalCall 4096

Wywołanie jest wewnętrzne, czyli wywołuje metodę zaimplementowaną w środowisku uruchomieniowym języka wspólnego.

NoInlining 8

Nie można podlinkować metody. Podkreślenie to optymalizacja, za pomocą której wywołanie metody jest zastępowane treścią metody.

NoOptimization 64

Metoda nie jest zoptymalizowana przez kompilator just in time (JIT) lub przez generowanie kodu natywnego (zobacz Ngen.exe) podczas debugowania możliwych problemów z generowaniem kodu.

PreserveSig 128

Podpis metody jest eksportowany dokładnie tak, jak zadeklarowano.

SecurityMitigations 1024

Ten element członkowski jest zarezerwowany do użytku w przyszłości. Wprowadzono go w .NET Framework 4.8.

Synchronized 32

Metoda może być wykonywana tylko przez jeden wątek jednocześnie. Metody statyczne blokują typ, podczas gdy metody wystąpienia blokują wystąpienie. Tylko jeden wątek może być wykonywany w dowolnej funkcji wystąpienia, a tylko jeden wątek może być wykonywany w dowolnej funkcji statycznej klasy.

Unmanaged 4

Metoda jest implementowana w kodzie niezarządzanego.

Uwagi

Ta wyliczenie jest używana z atrybutem MethodImplAttribute .

Można określić wiele MethodImplOptions wartości za pomocą operatora OR bitowego.

Uwaga

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 w typach publicznych i wystąpieniach. Może to spowodować zakleszczenia lub inne problemy z synchronizacją.

Dotyczy