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ů