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. Klasa ta nie może być dziedziczona.
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ć dojścia przy użyciu PrepareConstrainedRegions metody . Aby niezawodnie ustawić dojście do określonego wstępnie istniejącego dojścia, należy upewnić się, że alokacja uchwytu natywnego i późniejsze rejestrowanie tego uchwytu w SafeHandle obiekcie 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ć PrepareConstrainedRegions metody , 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 elementem |
Box(Byte, RuntimeTypeHandle) |
Udostępnia zestaw metod statycznych i właściwości, które zapewniają obsługę kompilatorów. Klasa ta nie może być dziedziczona. |
CreateSpan<T>(RuntimeFieldHandle) |
Zapewnia szybki sposób uzyskiwania dostępu do stałych danych przechowywanych w module jako ReadOnlySpan<T>. |
EnsureSufficientExecutionStack() |
Zapewnia, że pozostałe miejsce na stosie jest wystarczająco duże, aby wykonać średnią funkcję .NET. |
Equals(Object, Object) |
Określa, czy określone Object wystąpienia są traktowane jako równe. |
ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers+TryCode, RuntimeHelpers+CleanupCode, Object) |
Przestarzałe.
Wykonuje kod przy użyciu innego DelegateDelegate elementu , aby wykonać dodatkowy kod w przypadku wyjątku. |
GetHashCode(Object) |
Służy jako funkcja skrótu dla określonego obiektu i jest odpowiednia 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.
Zapewnia aplikacjom możliwość dynamicznego przygotowywania AppDomain delegatów zdarzeń. |
PrepareDelegate(Delegate) |
Wskazuje, że określony delegat powinien być przygotowany do włączenia do ograniczonego regionu wykonywania (CER). |
PrepareMethod(RuntimeMethodHandle) |
Przygotowuje metodę do włączenia do ograniczonego regionu wykonywania (CER). |
PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[]) |
Przygotowuje metodę do dołączenia do ograniczonego regionu wykonywania (CER) przy użyciu określonego wystąpienia. |
ProbeForSufficientStack() |
Przestarzałe.
Sondy dla określonej ilości 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) |
Zapewnia, że określona metoda konstruktora modułu została uruchomiona przez czas zwracania tej metody. |
SizeOf(RuntimeTypeHandle) |
Udostępnia zestaw metod statycznych i właściwości, które zapewniają obsługę kompilatorów. Klasa ta nie może być dziedziczona. |
TryEnsureSufficientExecutionStack() |
Próbuje upewnić się, że istnieje wystarczająca ilość stosu, aby wykonać średnią funkcję .NET. |
Dotyczy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla