Прочитать на английском

Поделиться через


RuntimeHelpers.GetObjectValue(Object) Метод

Определение

Упаковывает тип значения.

C#
public static object GetObjectValue(object obj);
C#
public static object? GetObjectValue(object? obj);

Параметры

obj
Object

Упаковываемый тип значения.

Возвращаемое значение

Упакованная копия obj, если это класс значения; в противном случае — obj.

Примеры

В следующем примере показано, как упаковать класс значений с помощью GetObjectValue метода .

C#
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);
    }
}

Комментарии

При упаковке типа значения создается объект и выполняется неполная копия полей указанного типа значения в новый объект.

Этот метод позволяет управлять классом значений как объектом, сохраняя при этом поведение псевдонима класса значений.

Возвращаемое значение зависит от того, является ли класс значений изменяемым или неизменяемым:

  • Если присваиваемое значение является изменяемым классом значений, метод возвращает неглубокую копию класса, так как классы значений имеют семантику копирования.

  • Если присваиваемое значение является неизменяемым классом значений, метод возвращает сам объект, а не копию класса .

Компиляторы динамически типизированных языков могут использовать этот метод, чтобы гарантировать, что упакованные типы значений работают так же, как и типы значений, распакованные. Это значит, что типы упакованных значений клонируются при их передаче, и они всегда передаются по значению. Компилятор может вызвать GetObjectValue метод , чтобы назначить тип значения объекту или передать тип значения в качестве параметра объекта типа.

Этот метод используется компиляторами.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0