RuntimeHelpers Clase
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í.
Proporciona un conjunto de propiedades y métodos estáticos que proporcionan funcionalidad para los compiladores. Esta clase no puede heredarse.
public ref class RuntimeHelpers abstract sealed
public ref class RuntimeHelpers sealed
public static class RuntimeHelpers
[System.Serializable]
public sealed class RuntimeHelpers
type RuntimeHelpers = class
[<System.Serializable>]
type RuntimeHelpers = class
Public Class RuntimeHelpers
Public NotInheritable Class RuntimeHelpers
- Herencia
-
RuntimeHelpers
- Atributos
Ejemplos
En el ejemplo siguiente se muestra cómo establecer de forma confiable los identificadores mediante el PrepareConstrainedRegions método . Para establecer de forma confiable un identificador en un identificador preexistente especificado, debe asegurarse de que la asignación del identificador nativo y la grabación posterior de ese identificador dentro de un SafeHandle objeto es atómica. Cualquier error entre estas operaciones (como una anulación de subproceso o una excepción de memoria insuficiente) provocará que se filtre el identificador nativo. Puede usar el PrepareConstrainedRegions método para asegurarse de que el identificador no se filtre.
[StructLayout(LayoutKind.Sequential)]
struct MyStruct
{
public IntPtr m_outputHandle;
}
sealed class MySafeHandle : SafeHandle
{
// Called by P/Invoke when returning SafeHandles
public MySafeHandle()
: base(IntPtr.Zero, true)
{
}
public MySafeHandle AllocateHandle()
{
// Allocate SafeHandle first to avoid failure later.
MySafeHandle sh = new MySafeHandle();
RuntimeHelpers.PrepareConstrainedRegions();
try { }
finally
{
MyStruct myStruct = new MyStruct();
NativeAllocateHandle(ref myStruct);
sh.SetHandle(myStruct.m_outputHandle);
}
return sh;
}
<StructLayout(LayoutKind.Sequential)> _
Structure MyStruct
Public m_outputHandle As IntPtr
End Structure 'MyStruct
NotInheritable Class MySafeHandle
Inherits SafeHandle
' Called by P/Invoke when returning SafeHandles
Public Sub New()
MyBase.New(IntPtr.Zero, True)
End Sub
Public Function AllocateHandle() As MySafeHandle
' Allocate SafeHandle first to avoid failure later.
Dim sh As New MySafeHandle()
RuntimeHelpers.PrepareConstrainedRegions()
Try
Finally
Dim myStruct As New MyStruct()
NativeAllocateHandle(myStruct)
sh.SetHandle(myStruct.m_outputHandle)
End Try
Return sh
End Function
Propiedades
OffsetToStringData |
Obsoletos.
Obsoletos.
Obtiene el desplazamiento, en bytes, hasta los datos de la cadena especificada. |
Métodos
AllocateTypeAssociatedMemory(Type, Int32) |
Asigna la memoria que está asociada al parámetro |
CreateSpan<T>(RuntimeFieldHandle) |
Proporciona una manera rápida de acceder a los datos constantes almacenados en un módulo como .ReadOnlySpan<T> |
EnsureSufficientExecutionStack() |
Asegura que el espacio de pila restante es suficiente para ejecutar la función media de .NET. |
Equals(Object, Object) |
Determina si las instancias de Object especificadas se consideran iguales. |
ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object) |
Obsoletos.
Ejecuta código utilizando un Delegate a la vez que utiliza otro Delegate para ejecutar código adicional en caso de una excepción. |
GetHashCode(Object) |
Sirve como función hash para un objeto concreto, y es apropiado para su utilización en algoritmos hash y estructuras de datos que usan códigos hash, como las tablas hash. |
GetObjectValue(Object) |
Encuadra un tipo de valor. |
GetSubArray<T>(T[], Range) |
Segmenta la matriz especificada utilizando el intervalo especificado. |
GetUninitializedObject(Type) |
Devuelve una instancia no inicializada del tipo proporcionado por el sistema. |
InitializeArray(Array, RuntimeFieldHandle) |
Proporciona un modo rápido de inicializar una matriz a partir de los datos almacenados en un módulo. |
IsReferenceOrContainsReferences<T>() |
Devuelve un valor que indica si el tipo especificado es un tipo de referencia o un tipo de valor que contiene referencias. |
PrepareConstrainedRegions() |
Obsoletos.
Designa un cuerpo de código como una región de ejecución limitada (CER, Constrained Execution Region). |
PrepareConstrainedRegionsNoOP() |
Obsoletos.
Designa un cuerpo de código como una región de ejecución limitada (CER, Constrained Execution Region) sin realizar ningún sondeo. |
PrepareContractedDelegate(Delegate) |
Obsoletos.
Proporciona a las aplicaciones un modo de preparar dinámicamente delegados de eventos de AppDomain. |
PrepareDelegate(Delegate) |
Indica que el delegado especificado debe estar preparado para la inclusión en una región de ejecución limitada (CER). |
PrepareMethod(RuntimeMethodHandle) |
Prepara un método para la inclusión en una región de ejecución limitada (CER, Constrained Execution Region). |
PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[]) |
Prepara un método para la inclusión en una región de ejecución limitada (CER, Constrained Execution Region) con la creación de instancias especificada. |
ProbeForSufficientStack() |
Obsoletos.
Comprueba cierta cantidad de espacio de pila para asegurarse de que no puede producirse un desbordamiento de pila dentro de un bloque de código subsiguiente (suponiendo que el código solo utiliza una cantidad finita y moderada de espacio de pila). Se recomienda utilizar una región de ejecución limitada (CER) en lugar de este método. |
RunClassConstructor(RuntimeTypeHandle) |
Garantiza que el inicializador de tipos (también conocido como "constructor estático") del tipo especificado se ha ejecutado. |
RunModuleConstructor(ModuleHandle) |
Garantiza que un método constructor de módulo especificado se haya ejecutado en el momento en que este método devuelve. |
TryEnsureSufficientExecutionStack() |
Intenta asegurarse de que hay suficiente pila para ejecutar la función media de .NET. |
Se aplica a
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de