RuntimeHelpers.GetObjectValue(Object) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
Copie convertie de obj
s'il s'agit d'une classe de valeur ; sinon, obj
lui-même.
Exemples
L’exemple suivant montre comment boxer une classe value à 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
La boxe 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 de manipuler une classe de valeur en tant qu’objet tout en conservant le comportement d’aliasing d’une classe de valeur.
La valeur de retour dépend si la classe value est mutable ou immuable :
Si la valeur affectée est une classe de valeur mutable, la méthode retourne une copie superficielle de la classe, car les classes valeur ont une sémantique de copie.
Si la valeur affecté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 typés dynamiquement peuvent utiliser cette méthode pour s’assurer que les types de valeurs encadrées fonctionnent de la même manière que les types de valeurs non encadrées. Autrement dit, les types de valeurs box sont clonés lorsque vous les transmettez, et ils sont toujours passés par valeur. Le compilateur peut appeler GetObjectValue pour affecter un type de valeur à un objet ou pour passer un type value en tant que paramètre d’un objet de type.
Cette méthode est utilisée par les compilateurs.