Bagikan melalui


RuntimeHelpers.GetObjectValue(Object) Metode

Definisi

Kotak jenis nilai.

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

Jenis nilai yang akan dikotak.

Mengembalikan

Salinan obj kotak jika itu adalah kelas nilai; jika tidak, obj itu sendiri.

Contoh

Contoh berikut menunjukkan cara mengetik kelas nilai dengan menggunakan GetObjectValue metode .

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

Keterangan

Tinju jenis nilai membuat objek dan melakukan salinan dangkal bidang dari jenis nilai yang ditentukan ke dalam objek baru.

Metode ini memungkinkan kelas nilai dimanipulasi sebagai objek saat mempertahankan perilaku alias kelas nilai.

Nilai yang dikembalikan tergantung pada apakah kelas nilai dapat diubah atau tidak dapat diubah:

  • Jika nilai yang ditetapkan adalah kelas nilai yang dapat diubah, metode mengembalikan salinan kelas yang dangkal, karena kelas nilai memiliki semantik salinan.

  • Jika nilai yang ditetapkan adalah kelas nilai yang tidak dapat diubah, metode mengembalikan objek itu sendiri, bukan salinan kelas.

Pengkompilasi bahasa yang di ketik secara dinamis dapat menggunakan metode ini untuk memastikan bahwa jenis nilai kotak berfungsi secara identik dengan jenis nilai yang tidak dikotak. Artinya, jenis nilai kotak dikloning saat Anda meneruskannya, dan selalu diteruskan oleh nilai. Pengkompilasi dapat memanggil GetObjectValue untuk menetapkan jenis nilai ke objek atau untuk meneruskan jenis nilai sebagai parameter objek jenis.

Metode ini digunakan oleh pengkompilasi.

Berlaku untuk