MethodImplOptions Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt Konstanten an, die die Details der Implementierung einer Methode definieren.
Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.
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
- Vererbung
- Attribute
Felder
AggressiveInlining | 256 | Die Methode sollte möglichst intern sein. Eine unnötige Verwendung dieses Attributs kann die Leistung beeinträchtigen. Das Attribut kann dazu führen, dass Implementierungsgrenzwerte gefunden werden, die zu langsamer generiertem Code führen. Messen Sie immer die Leistung, um sicherzustellen, dass es hilfreich ist, dieses Attribut anzuwenden. |
AggressiveOptimization | 512 | Die -Methode enthält Code, der immer für die Leistung optimiert werden sollte. Es ist selten angebracht, dieses Attribut zu verwenden. Methoden, die dieses Attribut anwenden, umgehen die erste Ebene der mehrstufigen Kompilierung und profitieren daher nicht von Optimierungen, die auf mehrstufiger Kompilierung basieren. Diese Optimierungen umfassen dynamische PGO und Optimierungen, die auf initialisierten Klassen basieren. Die Verwendung dieses Attributs kann auch die Arbeitsspeicherauslastung erhöhen. Messen Sie immer die Leistung, um sicherzustellen, dass es hilfreich ist, dieses Attribut anzuwenden. |
ForwardRef | 16 | Die Methode wird deklariert, aber die Implementierung wird an anderer Stelle bereitgestellt. |
InternalCall | 4096 | Der Aufruf ist intern, d. h. es wird eine Methode aufgerufen, die innerhalb der Common Language Runtime implementiert wird. |
NoInlining | 8 | Die Methode kann nicht intern sein. Inlining ist eine Optimierung, bei der der Aufruf einer Methode durch den Methodentext ersetzt wird. |
NoOptimization | 64 | Die Methode wird beim Debuggen möglicher Codegenerierungsprobleme nicht durch den Just-in-Time-Compiler (JIT) oder durch Generierung von nativem Code optimiert (siehe Ngen.exe). |
PreserveSig | 128 | Die Signatur der Methode wird genau entsprechend der Deklaration exportiert. |
SecurityMitigations | 1024 | Dieses Element ist für die zukünftige Verwendung reserviert. Es wurde in .NET Framework 4.8 eingeführt. |
Synchronized | 32 | Die Methode kann nur jeweils von einem einzigen Thread ausgeführt werden. Statische Methoden sperren den Typ, wohingegen Instanzmethoden die Instanz sperren. Nur ein einziger Thread kann in einer der Instanzfunktionen ausgeführt werden, und nur ein einziger Thread kann in einer der statischen Funktionen einer Klasse ausgeführt werden. |
Unmanaged | 4 | Die Methode wird in nicht verwalteten Code implementiert. |
Hinweise
Diese Enumeration wird mit dem MethodImplAttribute -Attribut verwendet.
Sie können mehrere MethodImplOptions Werte angeben, indem Sie den bitweisen OR-Operator verwenden.
Hinweis
Das Sperren der Instanz oder des Typs, wie beim Synchronized
Flag, wird für öffentliche Typen nicht empfohlen, da anderer Code als Ihr eigener Code Sperren für öffentliche Typen und Instanzen annehmen kann. Dies kann zu Deadlocks oder anderen Synchronisierungsproblemen führen.