MethodImplOptions 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 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
- 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 programie .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ą.