Share via


RuntimeHelpers.GetObjectValue(Object) Yöntem

Tanım

Bir değer türünü kutular.

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

Parametreler

obj
Object

Kutulanacak değer türü.

Döndürülenler

Bir değer sınıfıysa kutulanmış kopyası obj ; değilse, obj kendisi.

Örnekler

Aşağıdaki örnekte, yöntemini kullanarak bir değer sınıfının nasıl kutuya konduğunu gösterilmektedir 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

Açıklamalar

Değer türünün kutulanması bir nesne oluşturur ve belirtilen değer türündeki alanların sığ bir kopyasını yeni nesneye gerçekleştirir.

Bu yöntem, bir değer sınıfının diğer ad oluşturma davranışını korurken bir değer sınıfının nesne olarak işlenmesine olanak tanır.

Dönüş değeri, değer sınıfının değişebilir mi yoksa sabit mi olduğuna bağlıdır:

  • Atanmakta olan değer değiştirilebilir bir değer sınıfıysa, değer sınıflarının kopyalama semantiği olduğundan yöntemi sınıfın sığ bir kopyasını döndürür.

  • Atanan değer sabit bir değer sınıfıysa, yöntemi sınıfın bir kopyası yerine nesnesinin kendisini döndürür.

Dinamik olarak yazılan dillerin derleyicileri, kutulanmış değer türlerinin kutulanmamış değer türleriyle aynı şekilde çalışmasını sağlamak için bu yöntemi kullanabilir. Başka bir ifadeyle, kutulanmış değer türleri bunları geçirdiğinizde kopyalanır ve her zaman değere göre geçirilir. Derleyici, bir nesneye değer türü atamak veya bir değer türünü tür nesnesinin parametresi olarak geçirmek için çağrısı GetObjectValue yapabilir.

Bu yöntem derleyiciler tarafından kullanılır.

Şunlara uygulanır