Freigeben über


RuntimeHelpers Klasse

Definition

Stellt eine Reihe statischer Methoden und Eigenschaften bereit, die Unterstützung für Compiler bereitstellen. Diese Klasse kann nicht geerbt werden.

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
Vererbung
RuntimeHelpers
Attribute

Beispiele

Das folgende Beispiel zeigt, wie Mithilfe der PrepareConstrainedRegions-Methode handles zuverlässig festgelegt werden. Um einen Handle zuverlässig auf einen angegebenen bereits vorhandenen Handle festzulegen, müssen Sie sicherstellen, dass die Zuordnung des systemeigenen Handles und die nachfolgende Aufzeichnung dieses Handles innerhalb eines SafeHandle-Objekts atomisch ist. Alle Fehler zwischen diesen Vorgängen (z. B. einer Threadabbruch- oder Out-of-Memory-Ausnahme) führen dazu, dass das systemeigene Handle verloren geht. Sie können die PrepareConstrainedRegions-Methode verwenden, um sicherzustellen, dass der Ziehpunkt nicht verloren geht.

[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

Eigenschaften

OffsetToStringData
Veraltet.
Veraltet.

Ruft den Offset in Byte auf die Daten in der angegebenen Zeichenfolge ab.

Methoden

AllocateTypeAssociatedMemory(Type, Int32)

Weist Speicher zu, der dem type zugeordnet ist, und wird freigegeben, wenn und wann der Type entladen wird.

Box(Byte, RuntimeTypeHandle)

Erstellt ein boxed -Objekt des angegebenen Typs aus den Daten, die sich am Zielverweis befinden.

CreateSpan<T>(RuntimeFieldHandle)

Bietet eine schnelle Möglichkeit, auf konstanten Daten zuzugreifen, die in einem Modul als ReadOnlySpan<T>gespeichert sind.

EnsureSufficientExecutionStack()

Stellt sicher, dass der verbleibende Stapelplatz groß genug ist, um die durchschnittliche .NET-Funktion auszuführen.

Equals(Object, Object)

Bestimmt, ob die angegebenen Object Instanzen gleich sind.

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

Führt Code mithilfe einer Delegate aus, während ein anderer Delegate verwendet wird, um zusätzlichen Code im Falle einer Ausnahme auszuführen.

GetHashCode(Object)

Dient als Hashfunktion für ein bestimmtes Objekt und eignet sich für die Verwendung in Algorithmen und Datenstrukturen, die Hashcodes verwenden, z. B. eine Hashtabelle.

GetObjectValue(Object)

Felder einen Werttyp.

GetSubArray<T>(T[], Range)

Segmentiert das angegebene Array mithilfe des angegebenen Bereichs.

GetUninitializedObject(Type)

Gibt eine nicht initialisierte Instanz des vom System bereitgestellten Typs zurück.

InitializeArray(Array, RuntimeFieldHandle)

Bietet eine schnelle Möglichkeit zum Initialisieren eines Arrays aus Daten, die in einem Modul gespeichert sind.

IsReferenceOrContainsReferences<T>()

Gibt einen Wert zurück, der angibt, ob der angegebene Typ ein Bezugstyp oder ein Werttyp ist, der Verweise oder Nachreferenzen enthält.

PrepareConstrainedRegions()
Veraltet.

Legt einen Codetext als eingeschränkten Ausführungsbereich (CER) fest.

PrepareConstrainedRegionsNoOP()
Veraltet.

Legt einen Codetext als eingeschränkten Ausführungsbereich (CER) fest, ohne eine Probingfunktion auszuführen.

PrepareContractedDelegate(Delegate)
Veraltet.

Bietet eine Möglichkeit für Anwendungen, AppDomain Ereignisdelegatten dynamisch vorzubereiten.

PrepareDelegate(Delegate)

Gibt an, dass die angegebene Stellvertretung für die Aufnahme in einen eingeschränkten Ausführungsbereich (CER) vorbereitet werden soll.

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

Bereitet eine Methode für die Aufnahme in einen eingeschränkten Ausführungsbereich (CER) mit der angegebenen Instanziierung vor.

PrepareMethod(RuntimeMethodHandle)

Bereitet eine Methode für die Aufnahme in einen eingeschränkten Ausführungsbereich (CER) vor.

ProbeForSufficientStack()
Veraltet.

Probes für einen bestimmten Stapelraum, um sicherzustellen, dass ein Stapelüberlauf nicht innerhalb eines nachfolgenden Codeblocks erfolgen kann (vorausgesetzt, ihr Code verwendet nur einen begrenzten und moderaten Stapelraum). Es wird empfohlen, anstelle dieser Methode einen eingeschränkten Ausführungsbereich (CER) zu verwenden.

RunClassConstructor(RuntimeTypeHandle)

Stellt sicher, dass der Typinitialisierer (auch als statischer Konstruktor bezeichnet) für den angegebenen Typ ausgeführt wurde.

RunModuleConstructor(ModuleHandle)

Stellt sicher, dass eine angegebene Modulkonstruktormethode ausgeführt wird, wenn diese Methode zurückgegeben wird.

SizeOf(RuntimeTypeHandle)

Ruft die Größe eines Objekts des angegebenen Typs ab.

TryEnsureSufficientExecutionStack()

Es wird versucht, sicherzustellen, dass genügend Stapel vorhanden ist, um die durchschnittliche .NET-Funktion auszuführen.

Gilt für: