Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Boxning innebär att omsluta en värdetypsvariabel, såsom Windows::Foundation::DateTime, eller en grundläggande skalär typ, såsom int, i en referensklass när variabeln skickas till en metod som tar Platform::Object^ som ingångstyp.
Skicka en värdetyp till en Object^-parameter
Även om du inte uttryckligen behöver boxa en variabel för att skicka den till en metodparameter av typen Plattform::Objekt^, måste du uttryckligen återställa till den ursprungliga typen när du hämtar värden som tidigare har boxats.
Object^ obj = 5; //scalar value is implicitly boxed
int i = safe_cast<int>(obj); //unboxed with explicit cast.
Använda Platform::IBox<T> för att stödja nullbara värdetyper
C# och Visual Basic stöder begreppet nullbara värdetyper. I C++/CX kan du använda Platform::IBox<T> typen för att exponera offentliga metoder som stöder nullbara värdetypsparametrar. I följande exempel visas en offentlig C++/CX-metod som returnerar null när en C#-anropare skickar null för ett av argumenten.
// 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);
}
};
I en C# XAML-klient kan du använda den så här:
// C# client code
BoxingDemo.Class1 obj = new BoxingDemo.Class1();
int? a = null;
int? b = 5;
var result = obj.Multiply(a, b); //result = null
Se även
Typsystem (C++/CX)
Gjutning (C++/CX)
C++/CX-språkreferens
referens för namnområden