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 il boxed di una classe di valori 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 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 a una classe di valori di essere manipolata come oggetto mentre mantiene il comportamento di aliasing di una classe di valori.
Il valore restituito dipende dal fatto che la classe di valori sia modificabile o non modificabile:
Se il valore assegnato è una classe di valori modificabile, il metodo restituisce una copia superficiale della classe , perché le classi di valori hanno la semantica di copia.
Se il valore assegnato è una classe di valori non modificabile, il metodo restituisce l'oggetto stesso, anziché una copia della classe .
I compilatori di linguaggi tipici dinamicamente possono usare questo metodo per assicurarsi che i tipi valore boxed funzionino in modo identico ai tipi valore unboxed. In altri, i tipi valore boxed vengono clonati quando vengono passati e vengono sempre passati per valore. Il compilatore può chiamare per assegnare un tipo valore a un oggetto o per passare un tipo GetObjectValue di valore come parametro di un oggetto tipo.
Questo metodo viene usato dai compilatori.