Прочитать на английском

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


RuntimeHelpers Класс

Определение

Предоставляет набор статических методов и свойств, которые обеспечивают поддержку компиляторов. Этот класс не может быть унаследован.

public static class RuntimeHelpers
[System.Serializable]
public sealed 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;
    }

Свойства

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

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0