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 назначение типа значения объекту или передать тип значения в качестве параметра объекта типа.
Этот метод используется компиляторами.