RuntimeHelpers.GetObjectValue(Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
V polích zadáte typ hodnoty.
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
Parametry
- obj
- Object
Typ hodnoty, který se má zapsat.
Návraty
Kopie v rámečku, obj
pokud se jedná o třídu hodnot; jinak sama obj
o sobě.
Příklady
Následující příklad ukazuje, jak pomocí metody řadit třídu GetObjectValue hodnot.
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
Poznámky
Boxování typu hodnoty vytvoří objekt a provede mělkou kopii polí zadaného typu hodnoty do nového objektu.
Tato metoda umožňuje manipulaci s třídou hodnot jako objekt, zatímco zachovává chování aliasingu třídy hodnoty.
Návratová hodnota závisí na tom, jestli je hodnotová třída proměnlivá nebo neměnná:
Pokud je přiřazená hodnota proměnlivou třídou hodnot, vrátí metoda mělkou kopii třídy, protože třídy hodnot mají sémantiku kopírování.
Pokud je přiřazená hodnota neměnnou hodnotovou třídou, vrátí metoda samotný objekt místo kopie třídy.
Kompilátory dynamicky zadaných jazyků mohou tuto metodu použít k zajištění, že krabicové typy hodnot fungují stejně jako nezařazené typy hodnot. To znamená, že krabicové typy hodnot se klonují, když je předáte, a vždy se předávají podle hodnoty. Kompilátor může volat GetObjectValue , aby objektu přiřadil typ hodnoty nebo předal typ hodnoty jako parametr objektu typu.
Tuto metodu používají kompilátory.