Boxing (C++/CX)
Leboxing est l’encapsulation d’une variable de type valeur, telle que Windows::Foundation::DateTimeou de type scalaire fondamental tel que int
dans une classe ref quand la variable est passée à une méthode qui accepte Platform::Object^ comme son type d’entrée.
Passer un type valeur à un paramètre Object^
Bien que vous ne deviez pas convertir par boxing une variable explicitement pour la passer à un paramètre de méthode de type Platform::Object^, vous devez caster explicitement vers le type d'origine lorsque vous récupérez des valeurs qui ont été précédemment converties par boxing.
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)
Effectuer un cast (C++/CX)
Informations de référence sur le langage C++/CX
Référence aux espaces de noms
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour