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

Object

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

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie eine Wertklasse mithilfe der -Methode geschachtelt GetObjectValue 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

Das Boxing eines Werttyps erstellt ein Objekt und führt eine flache Kopie der Felder des angegebenen Werttyps in das neue Objekt aus.

Diese Methode ermöglicht es, eine Wertklasse als Objekt zu bearbeiten, während sie das Aliasingverhalten einer Wertklasse beibehält.

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

  • Wenn der zugewiesene Wert eine änderbare Wertklasse ist, gibt die Methode eine flache Kopie der -Klasse zurück, da Wertklassen Kopiersemantik aufweisen.

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

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

Diese Methode wird von Compilern verwendet.

Gilt für