RuntimeHelpers.GetObjectValue(Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Esegue la conversione boxing di un tipo di valore.
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
Parametri
- obj
- Object
Tipo di valore di cui eseguire la conversione boxing.
Restituisce
Copia boxed di obj
se è una classe di valori. In caso contrario, obj
stesso.
Esempio
Nell'esempio seguente viene illustrato come eseguire la casella di una classe valore usando il GetObjectValue metodo .
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
Commenti
La conversione boxing di un tipo valore crea un oggetto ed esegue una copia superficiale dei campi del tipo di valore specificato nel nuovo oggetto.
Questo metodo consente di modificare una classe valore come oggetto mantenendo il comportamento di aliasing di una classe valore.
Il valore restituito dipende dal fatto che la classe value sia modificabile o non modificabile:
Se il valore assegnato è una classe valore modificabile, il metodo restituisce una copia superficiale della classe, perché le classi valore hanno una semantica di copia.
Se il valore assegnato è una classe valore non modificabile, il metodo restituisce l'oggetto stesso, anziché una copia della classe .
I compilatori di linguaggi tipizzato in modo dinamico possono usare questo metodo per assicurarsi che i tipi valore boxed funzionino in modo identico ai tipi valore senzaboxing. Ovvero, i tipi valore boxed vengono clonati quando vengono passati e vengono sempre passati per valore. Il compilatore può chiamare GetObjectValue per assegnare un tipo valore a un oggetto o per passare un tipo valore come parametro di un oggetto di tipo.
Questo metodo viene usato dai compilatori.