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 がアンロードされた場合に解放されます。

Box(Byte, RuntimeTypeHandle)

ターゲット参照にあるデータから、指定した型のボックス化されたオブジェクトを作成します。

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) に含めるために準備する必要があることを示します。

PrepareMethod(RuntimeMethodHandle)

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

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

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

ProbeForSufficientStack()
古い.

後続のコード ブロック内でスタック オーバーフローが発生しないように、一定のスタック領域をプローブします (コードで使用されるのは有限で中程度のスタック領域であると仮定)。 このメソッドの代わりに、制約付き実行リージョン (CER) を使用することをお勧めします。

RunClassConstructor(RuntimeTypeHandle)

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

RunModuleConstructor(ModuleHandle)

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

SizeOf(RuntimeTypeHandle)

指定した型のオブジェクトのサイズを取得します。

TryEnsureSufficientExecutionStack()

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

適用対象