共用方式為


Boxing (C++/CX)

將實值類型變數 (例如) 傳遞給使用 ) 或基本純量類型變數 (例如 ) 傳遞給使用Boxing int作為其輸入類型的方法時, Boxing 會將此變數包裝在 ref 類別中。

傳遞實值類型給 Object^ 參數

雖然您不需要明確將 Box 變數,以傳遞給 Platform::Object^類型的方法參數,但是當您擷取先前已 Box 的值時,您必須明確轉換回原始類型。

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

使用 Platform::IBox < T > 來支援可為 Null 的實值型別

C# 和 Visual Basic 支援可為 null 的實值類型概念。 在 C++/CX 中,您可以使用 Platform::IBox<T> 類型來公開支援可為 Null 實值型別參數的公用方法。 下列範例顯示 C++/CX 公用方法,當 C# 呼叫端傳遞其中一個引數的 Null 時,會傳回 Null。

// 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 語言參考
命名空間參考