Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Упаковка — это заключение переменной типа значения, например Windows::Foundation::DateTime, или базового скалярного типа, например int, в ссылочный класс при передаче переменной методу, который в качестве входного типа принимает Platform::Object^ .
Передача типа значения параметру Object^
Хотя явным образом упаковывать переменную для ее передачи в параметр метода типа Platform::Object^не требуется, необходимо выполнять явное приведение к исходному типу при получении значений, которые до этого были упакованы.
Object^ obj = 5; //scalar value is implicitly boxed
int i = safe_cast<int>(obj); //unboxed with explicit cast.
Использование Platform::IBox<T> для поддержки типов значений, допускающих значение NULL
C# и Visual Basic поддерживают понятие типов значений, допускающих значения null. В C++/CX можно использовать Platform::IBox<T> тип для предоставления общедоступных методов, поддерживающих параметры типа значений, допускающих значение NULL. В следующем примере показан открытый метод C++/CX, возвращающий значение NULL, когда вызывающий объект C# передает значение NULL для одного из аргументов.
// 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);
}
};
В клиенте XAML C# его можно использовать следующим образом:
// C# client code
BoxingDemo.Class1 obj = new BoxingDemo.Class1();
int? a = null;
int? b = 5;
var result = obj.Multiply(a, b); //result = null
См. также
Система типов (C++/CX)
Приведение (C++/CX)
Справочник по языку C++/CX
Справочник по пространствам имен