Sdílet prostřednictvím


RuntimeHelpers.GetObjectValue(Object) Metoda

Definice

V polích zadáte typ hodnoty.

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 hodnoty, který se má zapsat.

Návraty

Kopie v rámečku, obj pokud se jedná o třídu hodnot; jinak sama obj o sobě.

Příklady

Následující příklad ukazuje, jak pomocí metody řadit třídu GetObjectValue hodnot.

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

Poznámky

Boxování typu hodnoty vytvoří objekt a provede mělkou kopii polí zadaného typu hodnoty do nového objektu.

Tato metoda umožňuje manipulaci s třídou hodnot jako objekt, zatímco zachovává chování aliasingu třídy hodnoty.

Návratová hodnota závisí na tom, jestli je hodnotová třída proměnlivá nebo neměnná:

  • Pokud je přiřazená hodnota proměnlivou třídou hodnot, vrátí metoda mělkou kopii třídy, protože třídy hodnot mají sémantiku kopírování.

  • Pokud je přiřazená hodnota neměnnou hodnotovou třídou, vrátí metoda samotný objekt místo kopie třídy.

Kompilátory dynamicky zadaných jazyků mohou tuto metodu použít k zajištění, že krabicové typy hodnot fungují stejně jako nezařazené typy hodnot. To znamená, že krabicové typy hodnot se klonují, když je předáte, a vždy se předávají podle hodnoty. Kompilátor může volat GetObjectValue , aby objektu přiřadil typ hodnoty nebo předal typ hodnoty jako parametr objektu typu.

Tuto metodu používají kompilátory.

Platí pro