RuntimeHelpers.GetObjectValue(Object) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Упаковывает тип значения.
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
Параметры
- obj
- Object
Упаковываемый тип значения.
Возвращаемое значение
Упакованная копия obj
, если это класс значения; в противном случае — obj
.
Примеры
В следующем примере показано, как упаковать класс значений с помощью GetObjectValue метода .
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
Комментарии
При упаковке типа значения создается объект и выполняется неполная копия полей указанного типа значения в новый объект.
Этот метод позволяет управлять классом значений как объектом, сохраняя при этом поведение псевдонима класса значений.
Возвращаемое значение зависит от того, является ли класс значений изменяемым или неизменяемым:
Если присваиваемое значение является изменяемым классом значений, метод возвращает неглубокую копию класса, так как классы значений имеют семантику копирования.
Если присваиваемое значение является неизменяемым классом значений, метод возвращает сам объект, а не копию класса .
Компиляторы динамически типизированных языков могут использовать этот метод, чтобы гарантировать, что упакованные типы значений работают так же, как и типы значений, распакованные. Это значит, что типы упакованных значений клонируются при их передаче, и они всегда передаются по значению. Компилятор может вызвать GetObjectValue метод , чтобы назначить тип значения объекту или передать тип значения в качестве параметра объекта типа.
Этот метод используется компиляторами.