Compartilhar via


RuntimeHelpers Classe

Definição

Fornece um conjunto de métodos estáticos e propriedades que fornecem suporte para compiladores. 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 método PrepareConstrainedRegions. 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 objeto SafeHandle seja atômica. Qualquer falha entre essas operações (como uma anulação de thread ou exceção de memória insuficiente) resultará no vazamento do identificador nativo. Você pode usar o método PrepareConstrainedRegions 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 fornecida.

Métodos

AllocateTypeAssociatedMemory(Type, Int32)

Aloca a memória associada ao type e é liberada se e quando o Type é descarregado.

Box(Byte, RuntimeTypeHandle)

Cria um objeto em caixa do tipo especificado a partir dos dados localizados na referência de destino.

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 seja grande o suficiente para executar a função média do .NET.

Equals(Object, Object)

Determina se as instâncias de Object especificadas são consideradas iguais.

ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object)
Obsoleto.

Executa o código usando um Delegate ao usar outra Delegate para executar código adicional em caso de exceção.

GetHashCode(Object)

Serve como uma função de hash para um objeto específico e é adequada para uso em algoritmos e estruturas de dados que usam códigos de hash, como uma tabela de hash.

GetObjectValue(Object)

Caixas de um tipo de valor.

GetSubArray<T>(T[], Range)

Corta a matriz especificada usando o intervalo especificado.

GetUninitializedObject(Type)

Retorna uma instância não inicializada do tipo fornecido pelo sistema.

InitializeArray(Array, RuntimeFieldHandle)

Fornece 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 CER (região de execução restrita).

PrepareConstrainedRegionsNoOP()
Obsoleto.

Designa um corpo de código como uma CER (região de execução restrita) sem executar nenhuma investigação.

PrepareContractedDelegate(Delegate)
Obsoleto.

Fornece uma maneira de os aplicativos prepararem dinamicamente AppDomain representantes de eventos.

PrepareDelegate(Delegate)

Indica que o delegado especificado deve estar 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 determinada quantidade de espaço de pilha para garantir que um estouro de pilha não possa ocorrer dentro de um bloco de código subsequente (supondo que seu código use apenas uma quantidade finita e moderada de espaço na 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 construtor estático) para o tipo especificado tenha sido executado.

RunModuleConstructor(ModuleHandle)

Garante que um método de construtor de módulo especificado tenha sido executado quando esse método retornar.

SizeOf(RuntimeTypeHandle)

Obtém o tamanho de um objeto do tipo fornecido.

TryEnsureSufficientExecutionStack()

Tenta garantir que haja pilha suficiente para executar a função média do .NET.

Aplica-se a