RuntimeHelpers.GetObjectValue(Object) Méthode

Définition

Convertit un type valeur.

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

Paramètres

obj
Object

Type valeur à convertir.

Retours

Object

Copie convertie de obj s'il s'agit d'une classe de valeur ; sinon, obj lui-même.

Exemples

L’exemple suivant montre comment effectuer un Box d’une classe de valeur à l’aide de la GetObjectValue méthode.

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

Remarques

Le boxing d’un type valeur crée un objet et effectue une copie superficielle des champs du type valeur spécifié dans le nouvel objet.

Cette méthode permet à une classe value d’être manipulée comme un objet alors qu’elle conserve le comportement d’alias d’une classe value.

La valeur de retour varie selon que la classe de valeur est mutable ou immuable :

  • Si la valeur assignée est une classe de valeur mutable, la méthode retourne une copie superficielle de la classe, car les classes de valeur ont une sémantique de copie.

  • Si la valeur assignée est une classe de valeur immuable, la méthode retourne l’objet lui-même, au lieu d’une copie de la classe.

Les compilateurs de langages dynamiquement typés peuvent utiliser cette méthode pour s’assurer que les types valeur boxed fonctionnent de la même façon que les types valeur unboxed. Autrement dit, les types valeur boxed sont clonés quand vous les transmettez, et ils sont toujours passés par valeur. Le compilateur peut appeler GetObjectValue pour assigner un type valeur à un objet ou pour passer un type valeur en tant que paramètre d’un objet type.

Cette méthode est utilisée par les compilateurs.

S’applique à