Share via


RuntimeHelpers.GetObjectValue(Object) Methode

Definition

Schachtelt einen Werttyp.

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

Parameter

obj
Object

Der zu schachtelnde Werttyp.

Gibt zurück

Eine geschachtelte Kopie von obj, wenn es eine Wertklasse ist, andernfalls obj.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie eine Wertklasse mit der GetObjectValue -Methode in Boxen ausgeführt wird.

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

Hinweise

Beim Boxen eines Werttyps wird ein -Objekt erstellt und eine flache Kopie der Felder des angegebenen Werttyps in das neue Objekt ausgeführt.

Mit dieser Methode kann eine Wertklasse als Objekt bearbeitet werden, während das Aliasverhalten einer Wertklasse beibehalten wird.

Der Rückgabewert hängt davon ab, ob die Wertklasse veränderbar oder unveränderlich ist:

  • Wenn der zugewiesene Wert eine veränderliche Wertklasse ist, gibt die -Methode eine flache Kopie der -Klasse zurück, da Wertklassen über Kopiersemantik verfügen.

  • Wenn der zugewiesene Wert eine unveränderliche Wertklasse ist, gibt die Methode anstelle einer Kopie der Klasse das Objekt selbst zurück.

Compiler dynamisch typisierter Sprachen können diese Methode verwenden, um sicherzustellen, dass Boxwerttypen identisch mit unboxierten Werttypen funktionieren. Das heißt, Boxwerttypen werden geklont, wenn Sie sie übergeben, und sie werden immer nach Wert übergeben. Der Compiler kann aufrufen GetObjectValue , um einem Objekt einen Werttyp zuzuweisen oder einen Werttyp als Parameter eines Typobjekts zu übergeben.

Diese Methode wird von Compilern verwendet.

Gilt für: