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)

對實值類型進行 Box 動作。

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[])

使用指定的執行個體化 (Instantiation) 準備要加入至限制的執行區域 (CER) 的方法。

ProbeForSufficientStack()
已淘汰.

探查特定的堆疊空間量,以確保後續的程式碼區塊中不會發生堆疊溢位 (假設您的程式碼只使用有限且適量的堆疊空間)。 建議您使用限制的執行區域 (CER) 來取代這個方法。

RunClassConstructor(RuntimeTypeHandle)

確保所指定類型的類型初始設定式 (也稱為靜態建構函式) 已執行。

RunModuleConstructor(ModuleHandle)

確保指定的模組建構函式方法在此方法傳回時已執行。

TryEnsureSufficientExecutionStack()

嘗試確保有足夠的堆疊可執行平均 .NET 函式。

適用於