MethodImplOptions Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica constantes que definen los detalles de cómo se implementa un método.
Esta enumeración admite una combinación bit a bit de sus valores de miembro.
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
- Herencia
- Atributos
Campos
AggressiveInlining | 256 | Si es posible, el método debe estar insertado. El uso innecesario de este atributo puede reducir el rendimiento. El atributo puede provocar que se encuentren límites de implementación que darán lugar a código generado más lento. Mida siempre el rendimiento para asegurarse de que resulta útil aplicar este atributo. |
AggressiveOptimization | 512 | El método contiene código que siempre debe optimizarse para el rendimiento. Rara vez es adecuado usar este atributo. Los métodos que aplican este atributo omiten el primer nivel de compilación en capas y, por tanto, no se benefician de las optimizaciones que se basan en la compilación en capas. Estas optimizaciones incluyen PGO dinámico y optimizaciones basadas en clases inicializadas. El uso de este atributo también podría aumentar el uso de memoria. Mida siempre el rendimiento para asegurarse de que resulta útil aplicar este atributo. |
ForwardRef | 16 | El método se declara, pero su implementación se proporciona en otra parte. |
InternalCall | 4096 | La llamada es interna; es decir, llama a un método que se implementa en Common Language Runtime. |
NoInlining | 8 | El método no se puede insertar. La inserción es una optimización por la cual una llamada al método se reemplaza por el cuerpo del método. |
NoOptimization | 64 | El método no está optimizado por el compilador just-in-time (JIT) o por la generación de código nativo (consulte Ngen.exe) al depurar los posibles problemas de generación de código. |
PreserveSig | 128 | La firma del método se exporta tal y como se declara. |
SecurityMitigations | 1024 | Este miembro se reserva para uso futuro. Se presentó en .NET Framework 4.8. |
Synchronized | 32 | El método lo puede ejecutar un único subproceso a la vez. Los métodos estáticos bloquean el tipo, mientras que los métodos de instancia bloquean la instancia. Solo un subproceso puede ejecutarse en cualquiera de las funciones de la instancia y solo un subproceso puede ejecutarse en cualquiera de las funciones estáticas de la clase. |
Unmanaged | 4 | El método se implementa en código no administrado. |
Comentarios
Esta enumeración se usa con el MethodImplAttribute atributo .
Puede especificar varios MethodImplOptions valores mediante el operador OR bit a bit.
Nota
No se recomienda bloquear en la instancia o en el tipo , como con la Synchronized
marca , para los tipos públicos, porque el código distinto del suyo puede tomar bloqueos en tipos y instancias públicos. Esto puede provocar interbloqueos u otros problemas de sincronización.