RuntimeHelpers Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece um conjunto de propriedades que dão suporte a compiladores e métodos estáticos. Essa classe não pode ser herdada.
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
- Herança
-
RuntimeHelpers
- Atributos
Exemplos
O exemplo a seguir mostra como definir identificadores de forma confiável usando o PrepareConstrainedRegions método . Para definir de forma confiável um identificador para um identificador pré-existente especificado, você deve garantir que a alocação do identificador nativo e a gravação subsequente desse identificador em um SafeHandle objeto sejam atômicas. Qualquer falha entre essas operações (como uma anulação de thread ou exceção de memória insuficiente) resultará na perda do identificador nativo. Você pode usar o PrepareConstrainedRegions método para garantir que o identificador não seja vazado.
[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
Propriedades
OffsetToStringData |
Obsoleto.
Obsoleto.
Obtém o deslocamento, em bytes, para os dados na cadeia de caracteres especificada. |
Métodos
AllocateTypeAssociatedMemory(Type, Int32) |
Aloca a memória associada com |
Box(Byte, RuntimeTypeHandle) |
Fornece um conjunto de propriedades que dão suporte a compiladores e métodos estáticos. Essa classe não pode ser herdada. |
CreateSpan<T>(RuntimeFieldHandle) |
Fornece uma maneira rápida de acessar dados constantes armazenados em um módulo como um ReadOnlySpan<T>. |
EnsureSufficientExecutionStack() |
Garante que o espaço de pilha restante é grande o suficiente para executar a função média do .NET. |
Equals(Object, Object) |
Determina se as instâncias Object especificadas são consideradas iguais. |
ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object) |
Obsoleto.
Executa o código usando um Delegate enquanto usa outro Delegate para executar código adicional no caso de uma exceção. |
GetHashCode(Object) |
Serve como uma função de hash para um determinado objeto e é adequado para uso em algoritmos e estruturas de dados que usam códigos de hash, como uma tabela de hash. |
GetObjectValue(Object) |
Demarca como um tipo de valor. |
GetSubArray<T>(T[], Range) |
Fatia a matriz especificada usando o intervalo especificado. |
GetUninitializedObject(Type) |
Retorna uma instância não inicializada do tipo fornecido pelo sistema. |
InitializeArray(Array, RuntimeFieldHandle) |
Oferece uma maneira rápida de inicializar uma matriz de dados armazenados em um módulo. |
IsReferenceOrContainsReferences<T>() |
Retorna um valor que indica se o tipo especificado é um tipo de referência ou um tipo de valor que contém referências ou refs. |
PrepareConstrainedRegions() |
Obsoleto.
Designa um corpo de código como uma região de execução restrita (CER). |
PrepareConstrainedRegionsNoOP() |
Obsoleto.
Designa um corpo de código como uma CER (região de execução restrita) sem realizar nenhuma investigação. |
PrepareContractedDelegate(Delegate) |
Obsoleto.
Fornece uma maneira para os aplicativos prepararem dinamicamente representantes de eventos AppDomain. |
PrepareDelegate(Delegate) |
Indica que o delegado especificado deve ser preparado para inclusão em uma CER (região de execução restrita). |
PrepareMethod(RuntimeMethodHandle) |
Prepara um método para inclusão em uma CER (região de execução restrita). |
PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[]) |
Prepara um método para inclusão em uma CER (região de execução restrita) com a instanciação especificada. |
ProbeForSufficientStack() |
Obsoleto.
Investiga uma determina quantidade de espaço de pilha para garantir que um estouro de pilha não possa acontecer dentro de um bloco de código subsequente (supondo que seu código usa apenas uma quantidade finita e moderada de espaço de pilha). Recomendamos que você use uma CER (região de execução restrita) em vez desse método. |
RunClassConstructor(RuntimeTypeHandle) |
Garante que o inicializador de tipo (também conhecido como um construtor estático) para o tipo especificado foi executado. |
RunModuleConstructor(ModuleHandle) |
Garante que um método de construtor de módulo especificado tenha sido executado até o momento em que esse método retornar. |
SizeOf(RuntimeTypeHandle) |
Fornece um conjunto de propriedades que dão suporte a compiladores e métodos estáticos. Essa classe não pode ser herdada. |
TryEnsureSufficientExecutionStack() |
Tenta garantir que haja pilha suficiente para executar a função média do .NET. |
Aplica-se a
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de