MethodImplOptions Énumération
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Spécifie des constantes qui définissent les détails de l’implémentation d’une méthode.
Cette énumération prend en charge une combinaison au niveau du bit de ses valeurs membres.
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
- Héritage
- Attributs
Champs
AggressiveInlining | 256 | La méthode doit être inline si possible. L’utilisation inutile de cet attribut peut réduire les performances. L’attribut peut entraîner des limites d’implémentation qui entraînent une génération de code plus lente. Mesurez toujours les performances pour vous assurer qu’il est utile d’appliquer cet attribut. |
AggressiveOptimization | 512 | La méthode contient du code qui doit toujours être optimisé pour les performances. Il est rarement approprié d’utiliser cet attribut. Les méthodes qui appliquent cet attribut contournent le premier niveau de compilation hiérarchisé et ne bénéficient donc pas des optimisations qui reposent sur la compilation hiérarchisé. Ces optimisations incluent des PGO dynamiques et des optimisations basées sur des classes initialisées. L’utilisation de cet attribut peut également augmenter l’utilisation de la mémoire. Mesurez toujours les performances pour vous assurer qu’il est utile d’appliquer cet attribut. |
ForwardRef | 16 | La méthode est déclarée, mais son implémentation est fournie ailleurs. |
InternalCall | 4096 | L’appel est interne, c’est-à-dire qu’il appelle une méthode implémentée dans le Common Language Runtime. |
NoInlining | 8 | La méthode ne peut pas être inline. L’incorporation est une optimisation par laquelle un appel de méthode est remplacé par le corps de méthode. |
NoOptimization | 64 | La méthode n’est pas optimisée par le compilateur juste-à-temps (JIT) ni par la génération de code natif (consultez Ngen.exe) lors du débogage des problèmes de génération de code potentiels. |
PreserveSig | 128 | La signature de méthode est exportée exactement telle que déclarée. |
SecurityMitigations | 1024 | Ce membre est réservé pour un usage ultérieur. Il a été introduit dans .NET Framework 4.8. |
Synchronized | 32 | La méthode peut être exécutée par un seul thread à la fois. Les méthodes statiques verrouillent le type, tandis que les méthodes d’instance verrouillent l’instance. Un seul thread peut s’exécuter dans toutes les fonctions de l’instance, et un seul thread peut s’exécuter toutes les fonctions statiques d’une classe. |
Unmanaged | 4 | La méthode est implémentée en code non managé. |
Remarques
Cette énumération est utilisée avec l’attribut MethodImplAttribute .
Vous pouvez spécifier plusieurs MethodImplOptions valeurs à l’aide de l’opérateur OR au niveau du bit.
Notes
Le verrouillage sur l’instance ou sur le type, comme avec l’indicateur Synchronized
, n’est pas recommandé pour les types publics, car un code autre que le vôtre peut prendre des verrous sur les types et instances publics. Cela peut entraîner des interblocages ou d’autres problèmes de synchronisation.