Boxing(C++/CX)

boxingWindows::Foundation::DateTime과 같은 값 형식 변수 또는 int와 같은 기본 스칼라 형식이 Platform::Object^ 을 해당 입력 형식으로 사용하는 메서드에 전달될 때 해당 변수를 ref 클래스에 래핑합니다.

Object^ 매개 변수에 값 형식 전달

Platform::Object^형식의 메서드 매개 변수에 전달하기 위해 명시적으로 변수를 boxing할 필요는 없지만 이전에 boxing된 값을 검색할 때는 명시적으로 원래 형식으로 캐스팅해야 합니다.

Object^ obj = 5; //scalar value is implicitly boxed
int i = safe_cast<int>(obj); //unboxed with explicit cast. 

Platform::IBox<T> 를 사용하여 nullable 값 형식 지원

C# 및 Visual Basic에서는 null 허용 값 형식의 개념을 지원합니다. C++/CX에서는 이 형식을 Platform::IBox<T> 사용하여 nullable 값 형식 매개 변수를 지원하는 공용 메서드를 노출할 수 있습니다. 다음 예제에서는 C# 호출자가 인수 중 하나에 대해 null을 전달하면 null을 반환하는 C++/CX public 메서드를 보여 줍니다.

// A WinRT Component DLL
namespace BoxingDemo
{
    public ref class Class1 sealed
    {
    public:
        Class1(){}
        Platform::IBox<int>^ Multiply(Platform::IBox<int>^ a, Platform::IBox<int>^ b)
        {
            if(a == nullptr || b == nullptr)
                return nullptr;
            else
                return ref new Platform::Box<int>(a->Value * b->Value);
        }
    };

C# XAML 클라이언트에서 이러한 메서드를 다음과 같이 사용할 수 있습니다.

// C# client code
BoxingDemo.Class1 obj = new BoxingDemo.Class1();
int? a = null;
int? b = 5;
var result = obj.Multiply(a, b); //result = null

참고 항목

형식 시스템(C++/CX)
캐스팅(C++/CX)
C++/CX 언어 참조
네임스페이스 참조