RuntimeHelpers.GetObjectValue(Object) Metódus

Definíció

Értéktípust jelöl meg.

public:
 static System::Object ^ GetObjectValue(System::Object ^ obj);
public static object GetObjectValue(object obj);
static member GetObjectValue : obj -> obj
Public Shared Function GetObjectValue (obj As Object) As Object

Paraméterek

obj
Object

A bekeretezett értéktípus.

Válaszok

Egy dobozos másolat obj , ha értékosztály; egyébként obj maga.

Példák

Az alábbi példa bemutatja, hogyan lehet egy értékosztályt beszűkíteni a GetObjectValue metódus használatával.

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

Megjegyzések

Az értéktípus dobozolásával létrehoz egy objektumot, és végrehajtja a megadott értéktípus mezőinek sekély másolatát az új objektumba.

Ez a módszer lehetővé teszi, hogy az értékosztályok objektumként legyenek manipulálva, miközben megtartják az értékosztály aliasálási viselkedését.

A visszatérési érték attól függ, hogy az értékosztály nem módosítható vagy nem módosítható:

  • Ha a hozzárendelt érték egy módosítható értékosztály, a metódus az osztály sekély másolatát adja vissza, mivel az értékosztályok másolási szemantikával rendelkeznek.

  • Ha a hozzárendelt érték nem módosítható értékosztály, a metódus az osztály másolata helyett magát az objektumot adja vissza.

A dinamikusan beírt nyelvek fordítói ezzel a módszerrel gondoskodhatnak arról, hogy a dobozos értéktípusok azonosak legyenek a nem beérkezett értéktípusokéval. Vagyis a dobozos értéktípusok klónozva lesznek, amikor átadja őket, és mindig érték alapján adják át őket. A fordító meghívhat GetObjectValue egy értéktípus objektumhoz való hozzárendelését, vagy egy értéktípus átadását egy típusobjektum paramétereként.

Ezt a módszert a fordítók használják.

A következőre érvényes: