Udostępnij za pośrednictwem


RuntimeHelpers.GetObjectValue(Object) Metoda

Definicja

Pola typu wartości.

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

Parametry

obj
Object

Typ wartości, który ma być pola.

Zwraca

Kopia pola, obj jeśli jest klasą wartości; w przeciwnym razie obj sama.

Przykłady

W poniższym przykładzie pokazano, jak polecić klasę wartości przy użyciu GetObjectValue metody .

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

Uwagi

Typ wartości boxing tworzy obiekt i wykonuje płytkią kopię pól określonego typu wartości do nowego obiektu.

Ta metoda umożliwia manipulowanie klasą wartości jako obiekt, zachowując zachowanie aliasu klasy wartości.

Wartość zwracana zależy od tego, czy klasa wartości jest niezmienna, czy niezmienna:

  • Jeśli przypisana wartość jest klasą wartości modyfikowalnej, metoda zwraca płytkią kopię klasy, ponieważ klasy wartości mają semantyka kopiowania.

  • Jeśli przypisana wartość jest niezmienną klasą wartości, metoda zwraca sam obiekt zamiast kopii klasy.

Kompilatory dynamicznie typowanych języków mogą używać tej metody, aby upewnić się, że typy wartości w polu działają identycznie z typami wartości rozpędzonych. Oznacza to, że typy wartości w polu są klonowane po przekazaniu ich i są zawsze przekazywane przez wartość. Kompilator może wywołać metodę GetObjectValue przypisywania typu wartości do obiektu lub przekazać typ wartości jako parametr obiektu typu.

Ta metoda jest używana przez kompilatory.

Dotyczy