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

适用于