Sdílet prostřednictvím


RuntimeHelpers Třída

Definice

Poskytuje sadu statických metod a vlastností, které poskytují podporu pro kompilátory. Tuto třídu nelze zdědit.

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
Dědičnost
RuntimeHelpers
Atributy

Příklady

Následující příklad ukazuje, jak spolehlivě nastavit popisovače pomocí PrepareConstrainedRegions metoda. Chcete-li spolehlivě nastavit popisovač na zadaný před existující popisovač, je nutné zajistit, aby přidělení nativního popisovače a následné nahrávání tohoto popisovače v rámci objektu SafeHandle je atomické. Jakékoli selhání mezi těmito operacemi (například přerušením vlákna nebo výjimkou mimo paměť) způsobí únik nativního popisovače. Pomocí metody PrepareConstrainedRegions se můžete ujistit, že popisovač neunikl.

[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

Vlastnosti

OffsetToStringData
Zastaralé.
Zastaralé.

Získá posun v bajtech na data v daném řetězci.

Metody

AllocateTypeAssociatedMemory(Type, Int32)

Přidělí paměť přidruženou k type a uvolní se, pokud a když se Type uvolní.

Box(Byte, RuntimeTypeHandle)

Vytvoří boxovaný objekt zadaného typu z dat umístěných v cílovém odkazu.

CreateSpan<T>(RuntimeFieldHandle)

Poskytuje rychlý způsob přístupu k konstantním datům uloženým v modulu jako ReadOnlySpan<T>.

EnsureSufficientExecutionStack()

Zajišťuje, že zbývající prostor zásobníku je dostatečně velký, aby se spustila průměrná funkce .NET.

Equals(Object, Object)

Určuje, zda jsou zadané Object instance považovány za stejné.

ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object)
Zastaralé.

Spustí kód pomocí Delegate při použití jiného Delegate ke spuštění dalšího kódu v případě výjimky.

GetHashCode(Object)

Slouží jako hashovací funkce pro konkrétní objekt a je vhodná pro použití v algoritmech a datových strukturách, které používají hashovací kódy, jako je například hashovací tabulka.

GetObjectValue(Object)

Pole typu hodnoty.

GetSubArray<T>(T[], Range)

Průřezy zadaného pole pomocí zadané oblasti.

GetUninitializedObject(Type)

Vrátí neinicializovanou instanci typu poskytnutého systémem.

InitializeArray(Array, RuntimeFieldHandle)

Poskytuje rychlý způsob, jak inicializovat pole z dat uložených v modulu.

IsReferenceOrContainsReferences<T>()

Vrátí hodnotu, která určuje, zda je zadaný typ odkaz nebo typ hodnoty obsahující odkazy nebo odkazy.

PrepareConstrainedRegions()
Zastaralé.

Určuje tělo kódu jako oblast omezeného spuštění (CER).

PrepareConstrainedRegionsNoOP()
Zastaralé.

Určuje tělo kódu jako oblast omezeného provádění (CER), aniž by bylo nutné provádět žádné sondy.

PrepareContractedDelegate(Delegate)
Zastaralé.

Poskytuje způsob, jak aplikace dynamicky připravovat AppDomain delegáty událostí.

PrepareDelegate(Delegate)

Označuje, že zadaný delegát by měl být připravený pro zahrnutí do oblasti omezeného spuštění (CER).

PrepareMethod(RuntimeMethodHandle)

Připraví metodu pro zahrnutí do oblasti omezeného spuštění (CER).

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

Připraví metodu pro zahrnutí do oblasti omezeného spuštění (CER) se zadanou instancí.

ProbeForSufficientStack()
Zastaralé.

Sondy pro určité množství prostoru zásobníku, aby se zajistilo, že přetečení zásobníku nemůže proběhnout v následném bloku kódu (za předpokladu, že váš kód používá pouze konečný a středně velký prostor zásobníku). Místo této metody doporučujeme použít oblast omezeného spuštění (CER).

RunClassConstructor(RuntimeTypeHandle)

Zajišťuje spuštění inicializátoru typu (označovaného také jako statický konstruktor) pro zadaný typ.

RunModuleConstructor(ModuleHandle)

Zajišťuje, že zadaná metoda konstruktoru modulu se spustí v době, kdy tato metoda vrátí.

SizeOf(RuntimeTypeHandle)

Získá velikost objektu daného typu.

TryEnsureSufficientExecutionStack()

Snaží se zajistit, aby byl k provedení průměrné funkce .NET dostatek zásobníku.

Platí pro