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) 中。

PrepareMethod(RuntimeMethodHandle)

准备一个要包含在受约束的执行区域 (CER) 中的方法。

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

准备一个要包含在受约束的执行区域 (CER) 中的具有指定实例化的方法。

ProbeForSufficientStack()
已过时.

探测某个数量的堆栈空间,以确保不会在后续的代码块内发生堆栈溢出(假设用户的代码仅使用有限适中的堆栈空间)。 建议使用受约束的执行区域 (CER),而不使用此方法。

RunClassConstructor(RuntimeTypeHandle)

确保已运行指定类型的类型初始值设定项(也称为静态构造函数)。

RunModuleConstructor(ModuleHandle)

确保指定的模块构造函数方法在此方法返回时已运行。

TryEnsureSufficientExecutionStack()

尝试确保有足够的堆栈来执行平均 .NET 函数。

适用于