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 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
- 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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla