RuntimeHelpers.GetObjectValue(Object) Metodo

Definizione

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

Object

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.

Si applica a