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
의 boxed 사본이고, 그렇지 않으면 obj
자체입니다.
예제
다음 예제에서는 메서드를 사용 하 여 값 클래스를 box 하는 방법을 보여 줍니다 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
설명
값 형식을 Boxing 하면 개체가 만들어지고 지정 된 값 형식의 필드에 대 한 단순 복사가 새 개체에 수행 됩니다.
이 메서드를 사용 하면 값 클래스의 앨리어싱 동작을 유지 하는 동안 값 클래스를 개체로 조작할 수 있습니다.
반환 값은 값 클래스를 변경할 수 있는지 여부에 따라 달라 집니다.
할당 되는 값이 변경 가능한 값 클래스 이면 값 클래스에 복사 의미 체계가 있기 때문에 메서드는 클래스의 단순 복사본을 반환 합니다.
할당 되는 값이 변경할 수 없는 값 클래스인 경우 메서드는 클래스의 복사본 대신 개체 자체를 반환 합니다.
동적으로 형식화 된 언어의 컴파일러에서는이 메서드를 사용 하 여 boxed 값 형식이 unboxed 값 형식과 동일 하 게 작동 하는지 확인할 수 있습니다. 즉, boxed 값 형식은 전달할 때 복제 되 고 항상 값으로 전달 됩니다. 컴파일러는를 호출 GetObjectValue 하 여 값 형식을 개체에 할당 하거나 값 형식을 형식 개체의 매개 변수로 전달할 수 있습니다.
이 메서드는 컴파일러에서 사용 됩니다.