Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Boxing inclut une variable de type valeur telle que Windows ::Foundation ::D ateTime ou un type scalaire fondamental tel que int– dans une classe ref lorsque la variable est passée à une méthode qui prend Platform ::Object^ comme type d’entrée.
Passer un type valeur à un paramètre Object^
Bien que vous n’ayez pas besoin de boxer explicitement une variable pour la transmettre à un paramètre de méthode de type Platform ::Object^, vous devez revenir explicitement au type d’origine lorsque vous récupérez des valeurs qui ont été précédemment boxées.
Object^ obj = 5; //scalar value is implicitly boxed
int i = safe_cast<int>(obj); //unboxed with explicit cast.
Utilisation de Platform ::IBox<T> pour prendre en charge les types de valeurs nullables
C# et Visual Basic prennent en charge le concept des types valeur autorisant la valeur Null. En C++/CX, vous pouvez utiliser le Platform::IBox<T> type pour exposer des méthodes publiques qui prennent en charge les paramètres de type valeur nullable. L’exemple suivant montre une méthode publique C++/CX qui retourne null lorsqu’un appelant C# passe null pour l’un des arguments.
// 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);
}
};
Dans un client C# XAML, vous pouvez l'utiliser comme suit :
// C# client code
BoxingDemo.Class1 obj = new BoxingDemo.Class1();
int? a = null;
int? b = 5;
var result = obj.Multiply(a, b); //result = null
Voir aussi
Système de type (C++/CX)
Cast (C++/CX)
Informations de référence sur le langage C++/CX
Informations de référence sur les espaces de noms