Dans mon application c #, je reçois un pointeur sur la structure c ++ dans callback / delegate. Je ne sais pas si la class
peut faire l’affaire, mais le simple fait de placer le pointeur c ++ sur la structure c # appropriée fonctionne correctement. C’est pourquoi j’utilise la structure c # pour stocker des données.
Maintenant, je veux passer une référence à struct pour un traitement ultérieur
class
car il ne sera probablement pas “mappé” parfaitement à la structure c ++. Comment puis je faire ça?
Cet exemple montre que struct est passé par valeur, pas par référence:
using System; namespace TestStruct { struct s { public int a; } class Program { static void Main(ssortingng[] args) { s s1 = new s { a = 1 }; Foo(s1); Console.WriteLine("outer a = " + s1.a); } private static void Foo(s s1) { s1.a++; Console.WriteLine("inner a = " + s1.a); } } }
La sortie est:
inner a = 2 outer a = 1
On dirait que vous voulez juste utiliser ref
pour passer le struct par référence:
private static void Foo(ref s s1) { s1.a++; Console.WriteLine("inner a = " + s1.a); }
Et sur le site de l’appel:
Foo(ref s1);
Voir mon article sur le passage de parameters en C # pour plus de détails.
Notez que, sauf pour l’interopérabilité, je recommanderais fortement de ne pas utiliser des structures mutables comme celle-ci. Je peux comprendre les avantages ici cependant.