RuntimeHelpers.GetObjectValue(Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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.