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 して、オブジェクトに値型を割り当てるか、型オブジェクトのパラメーターとして値型を渡すことができます。
このメソッドはコンパイラによって使用されます。
適用対象
.NET