RuntimeHelpers.GetObjectValue(Object) Metoda

Definice

Pole typu 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á zadávat.

Návraty

Zadaná kopie obj , pokud je to třída hodnot, obj v opačném případě sama.

Příklady

Následující příklad ukazuje, jak box hodnoty třídy pomocí 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

Poznámky

Boxing a value type vytvoří objekt a provede mělké kopie polí zadaného typu hodnoty do nového objektu.

Tato metoda umožňuje, aby třída hodnot byla manipulována jako objekt, zatímco zachovává chování aliasingu třídy hodnot.

Vrácená hodnota závisí na tom, jestli je třída hodnot proměnlivá nebo neměnná:

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

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

Kompilátory dynamicky zadaných jazyků mohou tuto metodu použít, aby se zajistilo, že typy hodnot v rámečku fungují stejně jako typy hodnot bez složky. To znamená, že typy hodnot v rámečku se naklonují, 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