RuntimeHelpers Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje sadu statických metod a vlastností, které poskytují podporu pro kompilátory. Tuto třídu nelze zdědit.
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
- Dědičnost
-
RuntimeHelpers
- Atributy
Příklady
Následující příklad ukazuje, jak spolehlivě nastavit popisovače pomocí PrepareConstrainedRegions metoda. Chcete-li spolehlivě nastavit popisovač na zadaný před existující popisovač, je nutné zajistit, aby přidělení nativního popisovače a následné nahrávání tohoto popisovače v rámci objektu SafeHandle je atomické. Jakékoli selhání mezi těmito operacemi (například přerušením vlákna nebo výjimkou mimo paměť) způsobí únik nativního popisovače. Pomocí metody PrepareConstrainedRegions se můžete ujistit, že popisovač neunikl.
[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
Vlastnosti
OffsetToStringData |
Zastaralé.
Zastaralé.
Získá posun v bajtech na data v daném řetězci. |
Metody
AllocateTypeAssociatedMemory(Type, Int32) |
Přidělí paměť přidruženou k |
Box(Byte, RuntimeTypeHandle) |
Vytvoří boxovaný objekt zadaného typu z dat umístěných v cílovém odkazu. |
CreateSpan<T>(RuntimeFieldHandle) |
Poskytuje rychlý způsob přístupu k konstantním datům uloženým v modulu jako ReadOnlySpan<T>. |
EnsureSufficientExecutionStack() |
Zajišťuje, že zbývající prostor zásobníku je dostatečně velký, aby se spustila průměrná funkce .NET. |
Equals(Object, Object) |
Určuje, zda jsou zadané Object instance považovány za stejné. |
ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object) |
Zastaralé.
Spustí kód pomocí Delegate při použití jiného Delegate ke spuštění dalšího kódu v případě výjimky. |
GetHashCode(Object) |
Slouží jako hashovací funkce pro konkrétní objekt a je vhodná pro použití v algoritmech a datových strukturách, které používají hashovací kódy, jako je například hashovací tabulka. |
GetObjectValue(Object) |
Pole typu hodnoty. |
GetSubArray<T>(T[], Range) |
Průřezy zadaného pole pomocí zadané oblasti. |
GetUninitializedObject(Type) |
Vrátí neinicializovanou instanci typu poskytnutého systémem. |
InitializeArray(Array, RuntimeFieldHandle) |
Poskytuje rychlý způsob, jak inicializovat pole z dat uložených v modulu. |
IsReferenceOrContainsReferences<T>() |
Vrátí hodnotu, která určuje, zda je zadaný typ odkaz nebo typ hodnoty obsahující odkazy nebo odkazy. |
PrepareConstrainedRegions() |
Zastaralé.
Určuje tělo kódu jako oblast omezeného spuštění (CER). |
PrepareConstrainedRegionsNoOP() |
Zastaralé.
Určuje tělo kódu jako oblast omezeného provádění (CER), aniž by bylo nutné provádět žádné sondy. |
PrepareContractedDelegate(Delegate) |
Zastaralé.
Poskytuje způsob, jak aplikace dynamicky připravovat AppDomain delegáty událostí. |
PrepareDelegate(Delegate) |
Označuje, že zadaný delegát by měl být připravený pro zahrnutí do oblasti omezeného spuštění (CER). |
PrepareMethod(RuntimeMethodHandle) |
Připraví metodu pro zahrnutí do oblasti omezeného spuštění (CER). |
PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[]) |
Připraví metodu pro zahrnutí do oblasti omezeného spuštění (CER) se zadanou instancí. |
ProbeForSufficientStack() |
Zastaralé.
Sondy pro určité množství prostoru zásobníku, aby se zajistilo, že přetečení zásobníku nemůže proběhnout v následném bloku kódu (za předpokladu, že váš kód používá pouze konečný a středně velký prostor zásobníku). Místo této metody doporučujeme použít oblast omezeného spuštění (CER). |
RunClassConstructor(RuntimeTypeHandle) |
Zajišťuje spuštění inicializátoru typu (označovaného také jako statický konstruktor) pro zadaný typ. |
RunModuleConstructor(ModuleHandle) |
Zajišťuje, že zadaná metoda konstruktoru modulu se spustí v době, kdy tato metoda vrátí. |
SizeOf(RuntimeTypeHandle) |
Získá velikost objektu daného typu. |
TryEnsureSufficientExecutionStack() |
Snaží se zajistit, aby byl k provedení průměrné funkce .NET dostatek zásobníku. |