共用方式為


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)

從位於目標參考的數據建立指定型別的 Boxed 物件。

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>()

傳回值,這個值表示指定的型別是參考型別,還是包含參考或 by-refs 的實值型別。

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 函式。

適用於