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í.
Pole typu 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á zadávat.
Návraty
Zadaná kopie obj , pokud je to třída hodnot, obj v opačném případě sama.
Příklady
Následující příklad ukazuje, jak box hodnoty třídy pomocí GetObjectValue metody.
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
Boxing a value type vytvoří objekt a provede mělké kopie polí zadaného typu hodnoty do nového objektu.
Tato metoda umožňuje, aby třída hodnot byla manipulována jako objekt, zatímco zachovává chování aliasingu třídy hodnot.
Vrácená hodnota závisí na tom, jestli je třída hodnot proměnlivá nebo neměnná:
Pokud je přiřazená hodnota proměnlivou třídou hodnot, metoda vrátí mělkou kopii třídy, protože třídy hodnot mají sémantiku kopírování.
Pokud je přiřazená hodnota neměnná hodnota třída, metoda vrátí samotný objekt místo kopie třídy.
Kompilátory dynamicky zadaných jazyků mohou tuto metodu použít, aby se zajistilo, že typy hodnot v rámečku fungují stejně jako typy hodnot bez složky. To znamená, že typy hodnot v rámečku se naklonují, 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.