RuntimeHelpers.GetObjectValue(Object) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
値型をボックスに格納します。
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
パラメーター
- obj
- Object
ボックスに格納する値型。
戻り値
値クラスの場合は obj
のボックス化されたコピー。それ以外の場合は obj
。
例
次の例は、メソッドを使用して値クラスをボックスにボックスする方法を示して 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
注釈
値型をボックス化すると、オブジェクトが作成され、指定した値型のフィールドの簡易コピーが新しいオブジェクトに実行されます。
このメソッドは、値クラスのエイリアス動作を保持しながら、値クラスをオブジェクトとして操作できるようにします。
戻り値は、値クラスが変更可能であるか不変であるかによって異なります。
割り当てられている値が変更可能な値クラスである場合、値クラスにはコピーのセマンティクスがあるため、メソッドはクラスの簡易コピーを返します。
割り当てられている値が変更できない値クラスの場合、メソッドは、クラスのコピーではなく、オブジェクト自体を返します。
動的に型指定された言語のコンパイラでは、このメソッドを使用して、ボックス化された値型がボックス化されていない値型とまったく同じように動作する つまり、ボックス化された値型は、それらを渡すときに複製され、常に値によって渡されます。 コンパイラは、 GetObjectValue を呼び出して、値型をオブジェクトに割り当てるか、型オブジェクトのパラメーターとして値型を渡すことができます。
このメソッドは、コンパイラによって使用されます。