Поделиться через


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 достаточно стека.

Применяется к