RuntimeHelpers Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Udostępnia zestaw metod statycznych i właściwości, które zapewniają obsługę kompilatorów. Tej klasy nie można dziedziczyć.
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
- Dziedziczenie
-
RuntimeHelpers
- Atrybuty
Przykłady
W poniższym przykładzie pokazano, jak niezawodnie ustawić uchwyty przy użyciu metody PrepareConstrainedRegions. Aby niezawodnie ustawić uchwyt do określonego wstępnie istniejącego uchwytu, należy upewnić się, że alokacja uchwytu natywnego i kolejne rejestrowanie tego uchwytu w obiekcie SafeHandle jest niepodzielne. Wszelkie błędy między tymi operacjami (takie jak przerwanie wątku lub wyjątek braku pamięci) spowodują wyciek natywnego dojścia. Możesz użyć metody PrepareConstrainedRegions, aby upewnić się, że dojście nie wyciekło.
[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
Właściwości
OffsetToStringData |
Przestarzałe.
Przestarzałe.
Pobiera przesunięcie w bajtach do danych w danym ciągu. |
Metody
AllocateTypeAssociatedMemory(Type, Int32) |
Przydziela pamięć skojarzona z |
Box(Byte, RuntimeTypeHandle) |
Tworzy obiekt skrzynkowy określonego typu z danych znajdujących się w odwołaniu docelowym. |
CreateSpan<T>(RuntimeFieldHandle) |
Zapewnia szybki sposób uzyskiwania dostępu do stałych danych przechowywanych w module jako ReadOnlySpan<T>. |
EnsureSufficientExecutionStack() |
Gwarantuje, że pozostałe miejsce na stosie jest wystarczająco duże, aby wykonać średnią funkcję .NET. |
Equals(Object, Object) |
Określa, czy określone wystąpienia Object są traktowane jako równe. |
ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object) |
Przestarzałe.
Wykonuje kod przy użyciu Delegate podczas używania innego Delegate w celu wykonania dodatkowego kodu w przypadku wyjątku. |
GetHashCode(Object) |
Służy jako funkcja skrótu dla określonego obiektu i nadaje się do użycia w algorytmach i strukturach danych, które używają kodów skrótów, takich jak tabela skrótów. |
GetObjectValue(Object) |
Pola typu wartości. |
GetSubArray<T>(T[], Range) |
Fragmentuje określoną tablicę przy użyciu określonego zakresu. |
GetUninitializedObject(Type) |
Zwraca niezainicjowane wystąpienie typu dostarczonego przez system. |
InitializeArray(Array, RuntimeFieldHandle) |
Zapewnia szybki sposób inicjowania tablicy z danych przechowywanych w module. |
IsReferenceOrContainsReferences<T>() |
Zwraca wartość wskazującą, czy określony typ jest typem referencyjnym, czy typem wartości zawierającym odwołania lub by-refs. |
PrepareConstrainedRegions() |
Przestarzałe.
Wyznacza treść kodu jako ograniczony region wykonywania (CER). |
PrepareConstrainedRegionsNoOP() |
Przestarzałe.
Wyznacza treść kodu jako ograniczony region wykonywania (CER) bez przeprowadzania sondowania. |
PrepareContractedDelegate(Delegate) |
Przestarzałe.
Umożliwia aplikacjom dynamiczne przygotowywanie delegatów zdarzeń AppDomain. |
PrepareDelegate(Delegate) |
Wskazuje, że określony delegat powinien być przygotowany do włączenia do ograniczonego regionu wykonywania (CER). |
PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[]) |
Przygotowuje metodę do dołączenia do ograniczonego regionu wykonywania (CER) z określonym wystąpieniem. |
PrepareMethod(RuntimeMethodHandle) |
Przygotowuje metodę do włączenia do ograniczonego regionu wykonywania (CER). |
ProbeForSufficientStack() |
Przestarzałe.
Sonduje określoną ilość miejsca na stosie, aby upewnić się, że przepełnienie stosu nie może nastąpić w kolejnym bloku kodu (przy założeniu, że kod używa tylko skończonej i umiarkowanej ilości miejsca stosu). Zalecamy użycie ograniczonego regionu wykonywania (CER) zamiast tej metody. |
RunClassConstructor(RuntimeTypeHandle) |
Gwarantuje, że został uruchomiony inicjator typu (znany również jako konstruktor statyczny) dla określonego typu. |
RunModuleConstructor(ModuleHandle) |
Gwarantuje, że określona metoda konstruktora modułu została uruchomiona przez czas zwracania tej metody. |
SizeOf(RuntimeTypeHandle) |
Pobiera rozmiar obiektu danego typu. |
TryEnsureSufficientExecutionStack() |
Próbuje upewnić się, że istnieje wystarczająca ilość stosu, aby wykonać średnią funkcję .NET. |