RuntimeHelpers.GetObjectValue(Object) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Vakken van een waardetype.
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
Parameters
- obj
- Object
Het waardetype dat in een vak moet worden geplaatst.
Retouren
Een in een vak geplaatste kopie obj van als het een waardeklasse is, anders zelf obj .
Voorbeelden
In het volgende voorbeeld ziet u hoe u een waardeklasse in een vak opgeeft met behulp van de GetObjectValue methode.
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
Opmerkingen
Als u een waardetype opgeeft, wordt een object gemaakt en wordt een ondiepe kopie uitgevoerd van de velden van het opgegeven waardetype in het nieuwe object.
Met deze methode kan een waardeklasse worden bewerkt als een object, terwijl het aliasgedrag van een waardeklasse behouden blijft.
De retourwaarde is afhankelijk van of de waardeklasse veranderlijk of onveranderbaar is:
Als de waarde die wordt toegewezen een onveranderbare waardeklasse is, retourneert de methode een ondiepe kopie van de klasse, omdat waardeklassen semantiek hebben.
Als de waarde die wordt toegewezen een onveranderbare waardeklasse is, retourneert de methode het object zelf in plaats van een kopie van de klasse.
Compilers van dynamisch getypte talen kunnen deze methode gebruiken om ervoor te zorgen dat vakken-waardetypen identiek werken met niet-geplaatste waardetypen. Dat wil gezegd: waardetypen in vakken worden gekloond wanneer u ze doorgeeft en ze worden altijd doorgegeven door de waarde. De compiler kan aanroepen GetObjectValue om een waardetype toe te wijzen aan een object of om een waardetype door te geven als parameter van een typeobject.
Deze methode wordt gebruikt door compilers.