RuntimeHelpers クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
コンパイラのサポートを提供する静的メソッドと静的プロパティのセットを提供します。 このクラスは継承できません。
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) |
|
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 関数を実行するのに十分なスタックがあることを確認します。 |
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示