MethodImplOptions Enumerazione
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica costanti che definiscono i dettagli della modalità di implementazione di un metodo.
Questa enumerazione supporta una combinazione bit per bit dei rispettivi valori dei membri.
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
- Ereditarietà
- Attributi
Campi
AggressiveInlining | 256 | Il metodo deve essere impostato come inline, se possibile. L'uso non necessario di questo attributo può ridurre le prestazioni. L'attributo potrebbe causare l'individuazione dei limiti di implementazione che causano un rallentamento del codice generato. Misurare sempre le prestazioni per assicurarsi che sia utile applicare questo attributo. |
AggressiveOptimization | 512 | Il metodo contiene codice che deve essere sempre ottimizzato per le prestazioni. Raramente è opportuno usare questo attributo. I metodi che applicano questo attributo ignorano il primo livello di compilazione a livelli e pertanto non traggono vantaggio dalle ottimizzazioni che si basano sulla compilazione a livelli. Tali ottimizzazioni includono pgo dinamico e ottimizzazioni basate su classi inizializzate. L'uso di questo attributo può anche aumentare l'uso della memoria. Misurare sempre le prestazioni per assicurarsi che sia utile applicare questo attributo. |
ForwardRef | 16 | Il metodo è dichiarato, ma la relativa implementazione è specificata altrove. |
InternalCall | 4096 | La chiamata è interna, ovvero viene chiamato un metodo implementato in Common Language Runtime. |
NoInlining | 8 | Il metodo non può essere impostato come inline. L'inlining è un'ottimizzazione in base alla quale una chiamata a un metodo viene sostituita con il corpo del metodo. |
NoOptimization | 64 | Il metodo non è ottimizzato dal compilatore JIT (Just-In-Time) o dalla generazione del codice nativo (vedere Ngen.exe) durante il debug di possibili problemi di generazione del codice. |
PreserveSig | 128 | La firma del metodo viene esportata esattamente come dichiarato. |
SecurityMitigations | 1024 | Questo membro è riservato per usi futuri. È stato introdotto in .NET Framework 4.8. |
Synchronized | 32 | Il metodo può essere eseguito da un solo thread alla volta. I metodi statici creano un blocco sul tipo, mentre i metodi di istanza creano un blocco sull'istanza. In una delle funzioni dell'istanza e in una delle funzioni statiche di una classe può essere eseguito un solo thread. |
Unmanaged | 4 | Il metodo è implementato in codice non gestito. |
Commenti
Questa enumerazione viene utilizzata con l'attributo MethodImplAttribute .
È possibile specificare più MethodImplOptions valori usando l'operatore OR bit per bit.
Nota
Il blocco sull'istanza o sul tipo, come con il Synchronized
flag , non è consigliato per i tipi pubblici, perché il codice diverso da quello dell'utente può accettare blocchi su tipi e istanze pubblici. Ciò potrebbe causare deadlock o altri problemi di sincronizzazione.