Sdílet prostřednictvím


Zabalení (C++/CX)

Zabalení zabalení proměnné typu hodnoty, jako je Windows::Foundation::D ateTime – nebo základní skalární typ, například int– do třídy ref, když je proměnná předána metodě, která jako vstupní typ přebírá Platform::Object^ .

Předání typu hodnoty parametru Object^

I když není nutné explicitně zadávat proměnnou do parametru metody typu Platform::Object^, je nutné explicitně přetypovat zpět na původní typ, když načtete hodnoty, které byly dříve boxovány.

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

Použití platformy::IBox<T> k podpoře typů hodnot s možnou hodnotou null

C# a Visual Basic podporují koncept typů hodnot s možnou hodnotou null. V jazyce C++/CX můžete pomocí Platform::IBox<T> typu zveřejnit veřejné metody, které podporují parametry typu hodnoty null. Následující příklad ukazuje veřejnou metodu C++/CX, která vrátí hodnotu null, když volající jazyka C# předá hodnotu null pro jeden z argumentů.

// 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);
        }
    };

V klientovi C# XAML ho můžete využívat takto:

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

Viz také

Systém typů (C++/CX)
Přetypování (C++/CX)
Referenční zdroje k jazyku C++/CX
Referenční informace o oborech názvů