RuntimeHelpers.GetObjectValue(Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Schachtelt einen Werttyp.
public:
static System::Object ^ GetObjectValue(System::Object ^ obj);
public static object GetObjectValue (object obj);
public static object? GetObjectValue (object? obj);
static member GetObjectValue : obj -> obj
Public Shared Function GetObjectValue (obj As Object) As Object
Parameter
- obj
- Object
Der zu schachtelnde Werttyp.
Gibt zurück
Eine geschachtelte Kopie von obj
, wenn es eine Wertklasse ist, andernfalls obj
.
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie eine Wertklasse mit der GetObjectValue -Methode in Boxen ausgeführt wird.
using System;
using System.Runtime.CompilerServices;
// Declare a value type.
struct Point2I
{
public int x;
public int y;
}
class Program
{
static void Main(string[] args)
{
// Allocate an unboxed Point2I (not on the heap).
Point2I pnt;
pnt.x = 0;
pnt.y = 0;
// Box the value. (Put it in the heap.)
object objPntr = RuntimeHelpers.GetObjectValue(pnt);
}
}
Imports System.Runtime.CompilerServices
' Declare a value type.
Structure Point2I
Dim x As Integer
Dim y As Integer
End Structure
Module Program
Sub Main(ByVal args() As String)
' Allocate an unboxed Point2I (not on the heap).
Dim pnt As Point2I
pnt.x = 0
pnt.y = 0
' Box the value. (Put it in the heap.)
Dim objPntr As Object = RuntimeHelpers.GetObjectValue(pnt)
End Sub
End Module
Hinweise
Beim Boxen eines Werttyps wird ein -Objekt erstellt und eine flache Kopie der Felder des angegebenen Werttyps in das neue Objekt ausgeführt.
Mit dieser Methode kann eine Wertklasse als Objekt bearbeitet werden, während das Aliasverhalten einer Wertklasse beibehalten wird.
Der Rückgabewert hängt davon ab, ob die Wertklasse veränderbar oder unveränderlich ist:
Wenn der zugewiesene Wert eine veränderliche Wertklasse ist, gibt die -Methode eine flache Kopie der -Klasse zurück, da Wertklassen über Kopiersemantik verfügen.
Wenn der zugewiesene Wert eine unveränderliche Wertklasse ist, gibt die Methode anstelle einer Kopie der Klasse das Objekt selbst zurück.
Compiler dynamisch typisierter Sprachen können diese Methode verwenden, um sicherzustellen, dass Boxwerttypen identisch mit unboxierten Werttypen funktionieren. Das heißt, Boxwerttypen werden geklont, wenn Sie sie übergeben, und sie werden immer nach Wert übergeben. Der Compiler kann aufrufen GetObjectValue , um einem Objekt einen Werttyp zuzuweisen oder einen Werttyp als Parameter eines Typobjekts zu übergeben.
Diese Methode wird von Compilern verwendet.