RuntimeHelpers.GetObjectValue(Object) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
É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.