MethodImplOptions Wyliczenie

Definicja

Określa stałe, które definiują szczegóły sposobu 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 być wbudowana.

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 powinien być zawsze zoptymalizowany pod kątem wydajności.

Rzadko należy używać tego atrybutu. Metody, które stosują ten atrybut, pomijają pierwszą warstwę kompilacji warstwowej i w związku z tym nie korzystają z optymalizacji opartych na kompilacji warstwowej. Optymalizacje te obejmują dynamiczne PGO i optymalizacje oparte na zainicjowanych klasach. 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 stosować wbudowanej metody. Inlining 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) ani 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

Metodę można wykonać tylko przez jeden wątek jednocześnie. Metody statyczne blokują typ, podczas gdy metody wystąpień są blokowane w wystąpieniu. 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ądzanych.

Uwagi

To wyliczenie jest używane z atrybutem MethodImplAttribute .

Można określić wiele MethodImplOptions wartości przy użyciu 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 dla typów publicznych i wystąpień. Może to spowodować zakleszczenia lub inne problemy z synchronizacją.

Dotyczy