RuntimeHelpers.GetObjectValue(Object) Methode

Definitie

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.

Van toepassing op