Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Boxing es el ajuste de una variable de tipo de valor como Windows::Foundation::DateTime(o un tipo escalar fundamental como int) en una clase ref cuando la variable se pasa a un método que toma Platform::Object^ como tipo de entrada.
Pasar un tipo de valor a un parámetro de tipo Object^
Aunque no tengas que aplicar conversión boxing de forma explícita a una variable para pasarla a un parámetro de método de tipo Platform::Object^, tienes que volver a convertir de forma explícita al tipo original cuando recuperes valores a los que se ha aplicado conversión boxing previamente.
Object^ obj = 5; //scalar value is implicitly boxed
int i = safe_cast<int>(obj); //unboxed with explicit cast.
Usar Platform::IBox<T> para admitir tipos de valor que aceptan valores NULL
C# y Visual Basic admiten el concepto de tipos de valor que aceptan valores NULL. En C++/CX,, puedes utilizar el tipo Platform::IBox<T> para exponer métodos públicos que admiten parámetros de tipo de valor que aceptan valores NULL. En el siguiente ejemplo se muestra un método público de C++/CX que devuelve NULL cuando un llamador de C# pasa NULL para uno de los argumentos.
// 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);
}
};
En un cliente XAML de C#, puedes usarlo de este modo:
// C# client code
BoxingDemo.Class1 obj = new BoxingDemo.Class1();
int? a = null;
int? b = 5;
var result = obj.Multiply(a, b); //result = null
Consulte también
Sistema de tipos (C++/CX)
Convertir (C++/CX)
Referencia del lenguaje C++/CX
Referencia de espacios de nombres