Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Boxing opakowuje zmienną typu wartości, taką jak Windows::Foundation::D ateTime — lub podstawowy typ skalarny, taki jak int— w klasie ref, gdy zmienna jest przekazywana do metody, która przyjmuje wartość Platform::Object^ jako typ danych wejściowych.
Przekazywanie typu wartości do parametru Object^
Mimo że nie musisz jawnie polecić zmiennej, aby przekazać ją do parametru metody typu Platform::Object^, musisz jawnie rzutować z powrotem do oryginalnego typu podczas pobierania wartości, które zostały wcześniej w polu.
Object^ obj = 5; //scalar value is implicitly boxed
int i = safe_cast<int>(obj); //unboxed with explicit cast.
Używanie platformy::IBox<T> do obsługi typów wartości dopuszczanych do wartości null
Język C# i Visual Basic obsługują koncepcję typów wartości dopuszczanych do wartości null. W języku C++/CX można użyć Platform::IBox<T> typu , aby uwidocznić metody publiczne, które obsługują parametry typu wartości dopuszczających wartość null. W poniższym przykładzie pokazano publiczną metodę C++/CX, która zwraca wartość null, gdy obiekt wywołujący języka C# przekazuje wartość null dla jednego z argumentów.
// 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);
}
};
W kliencie XAML języka C# możesz go użyć w następujący sposób:
// C# client code
BoxingDemo.Class1 obj = new BoxingDemo.Class1();
int? a = null;
int? b = 5;
var result = obj.Multiply(a, b); //result = null
Zobacz też
System typów (C++/CX)
Rzutowanie (C++/CX)
Dokumentacja języka C++/CX
Dokumentacja przestrzeni nazw