Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A boxing egy olyan értéktípus-változót burkol, mint például a Windows::Foundation::D ateTime vagy egy alapvető skaláris típus, például integy ref osztályban, amikor a változót egy olyan metódusnak továbbítja, amely a Platform::Object^ értéket használja bemeneti típusként.
Értéktípus átadása objektum^ paraméternek
Bár nem kell explicit módon megadnia egy változót a Platform::Object^ típusú metódusparaméternek való továbbításhoz, a korábban bekeretezett értékek lekérésekor explicit módon vissza kell adnia az eredeti típust.
Object^ obj = 5; //scalar value is implicitly boxed
int i = safe_cast<int>(obj); //unboxed with explicit cast.
Platform::IBox<T> használata a null értékű értéktípusok támogatásához
A C# és a Visual Basic támogatja a null értékű értékek fogalmát. A C++/CX-ben a típussal olyan nyilvános metódusokat tehet közzé, amelyek támogatják a Platform::IBox<T> null értékű értéktípus paramétereit. Az alábbi példa egy C++/CX nyilvános metódust mutat be, amely null értéket ad vissza, ha egy C#-hívó null értéket ad át az egyik argumentumnak.
// 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);
}
};
Egy C# XAML-ügyfélben a következőképpen használhatja fel:
// C# client code
BoxingDemo.Class1 obj = new BoxingDemo.Class1();
int? a = null;
int? b = 5;
var result = obj.Multiply(a, b); //result = null
Lásd még
Típusrendszer (C++/CX)
Öntés (C++/CX)
C++/CX nyelvi referencia
Névterek – referencia