RuntimeHelpers クラス

定義

コンパイラのサポートを提供する静的メソッドと静的プロパティのセットを提供します。 このクラスは継承できません。

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
継承
RuntimeHelpers
属性

次の例は、 メソッドを使用してハンドルを確実に設定する方法を PrepareConstrainedRegions 示しています。 指定した既存のハンドルにハンドルを確実に設定するには、ネイティブ ハンドルの割り当てと、オブジェクト内 SafeHandle でのそのハンドルの後続の記録がアトミックであることを確認する必要があります。 これらの操作 (スレッドの中止やメモリ不足の例外など) の間でエラーが発生すると、ネイティブ ハンドルがリークされます。 メソッドを PrepareConstrainedRegions 使用して、ハンドルがリークされていないことを確認できます。

[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

プロパティ

OffsetToStringData
古い.
古い.

特定の文字列のデータへのオフセットをバイト単位で取得します。

メソッド

AllocateTypeAssociatedMemory(Type, Int32)

type に関連付けられているメモリを割り当てます。Type がアンロードされると解放されます。

CreateSpan<T>(RuntimeFieldHandle)

としてモジュールに格納されている定数データにすばやくアクセスする方法を ReadOnlySpan<T>提供します。

EnsureSufficientExecutionStack()

残りのスタック領域が通常の .NET 関数を実行できる大きさであることを確認します。

Equals(Object, Object)

指定された Object インスタンスが等しいかどうかを判断します。

ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object)
古い.

Delegate を使用してコードを実行します。例外の場合は、別の Delegate を使用して追加のコードを実行します。

GetHashCode(Object)

特定のオブジェクトのハッシュ関数として機能し、ハッシュ アルゴリズムやハッシュ テーブルのようなハッシュ コードを使うデータ構造での使用に適しています。

GetObjectValue(Object)

値型をボックスに格納します。

GetSubArray<T>(T[], Range)

指定された範囲を使用して、指定された配列をスライスします。

GetUninitializedObject(Type)

システムが指定する型の初期化されていないインスタンスを返します。

InitializeArray(Array, RuntimeFieldHandle)

モジュールに格納されているデータから配列を高速に初期化する方法を提供します。

IsReferenceOrContainsReferences<T>()

指定された型が参照型であるか、または参照を含む値型であるかを示す値を返します。

PrepareConstrainedRegions()
古い.

コード本体を制約された実行領域 (CER) として指定します。

PrepareConstrainedRegionsNoOP()
古い.

プローブを実行しないで、コード本体を制約された実行領域 (CER) として指定します。

PrepareContractedDelegate(Delegate)
古い.

アプリケーションが AppDomain イベント デリゲートを動的に準備する手段を提供します。

PrepareDelegate(Delegate)

指定されたデリゲートを制約された実行領域 (CER: Constrained Execution Region) に含めるように準備する必要があることを示します。

PrepareMethod(RuntimeMethodHandle)

制約された実行領域 (CER) に含めるためのメソッドを準備します。

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

指定のインスタンス化を使用して、制約された実行領域 (CER) に含めるためのメソッドを準備します。

ProbeForSufficientStack()
古い.

一定量のスタック領域をプローブして、後続のコード ブロック内でスタック オーバーフローが発生しないことを確認します (コードは有限かつ適度な量のスタック領域だけを使用することを前提に)。 このメソッドではなく、制約された実行領域 (CER) を使用することをお勧めします。

RunClassConstructor(RuntimeTypeHandle)

指定した型の型初期化子 (静的コンストラクターとも呼ばれる) が実行されていることを確認します。

RunModuleConstructor(ModuleHandle)

指定したモジュール コンストラクター メソッドが、このメソッドが返される時点までに実行されていることを確認します。

TryEnsureSufficientExecutionStack()

平均 .NET 関数を実行するのに十分なスタックがあることを確認します。

適用対象