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.
Felder einen Werttyp.
public:
static System::Object ^ GetObjectValue(System::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 Werttyp, der eingefeldt werden soll.
Gibt zurück
Eine geschachtelte Kopie davon obj , ob es sich um eine Wertklasse handelt, obj andernfalls selbst.
Beispiele
Im folgenden Beispiel wird das Boxen einer Wertklasse mithilfe der GetObjectValue Methode veranschaulicht.
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
Durch das 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 sie das Aliasingverhalten einer Wertklasse beibehält.
Der Rückgabewert hängt davon ab, ob die Wertklasse änderbar oder unveränderlich ist:
Wenn der zugewiesene Wert eine veränderbare Wertklasse ist, gibt die Methode eine flache Kopie der Klasse zurück, da Wertklassen eine Kopiersemantik aufweisen.
Wenn der zugewiesene Wert eine unveränderliche Wertklasse ist, gibt die Methode das Objekt selbst anstelle einer Kopie der Klasse zurück.
Compiler von dynamisch typierten Sprachen können diese Methode verwenden, um sicherzustellen, dass boxed value types identisch mit unboxed value types funktionieren. Das heißt, boxed value types get cloned when you pass them around, and they are always passed by value. 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.