Je sais que le code C++/CLIref et en C++/CLI
void foo(Bar^% x);
se transforme en
Void foo(ref Bar x);
Quel est le code C++/CLI qui devient
Void foo(out Bar x);
?
Je sais que le code C++/CLIref et en C++/CLI
void foo(Bar^% x);
se transforme en
Void foo(ref Bar x);
Quel est le code C++/CLI qui devient
Void foo(out Bar x);
?
Vous pouvez utiliser le OutAttribute:
using namespace System::Runtime::InteropServices;
void foo([Out] Bar^% x);
Il n'existe aucune syntaxe spécifique dans C++/CLI. Je pense que vous pouvez obtenir assez proche en ajoutant le OutAttribute
pour modifier le paramètre. Mais je ne suis pas sûr que cela réalise exactement la même sémantique que C# out
.
Le concept de out
est pour la plupart limité à C#. Le CLR ne voit réellement que les paramètres ref
. Les concepts out
sont atteints via un mod opt je crois et la plupart des langues l'ignorent.
Eh oui, même pour VB.NET –
Il est la syntaxe passe par référence avec 'OutAttribute' appliquée au paramètre comme vous le dites. Il crée exactement les mêmes métadonnées qu'avec les paramètres C# 'out'. Par "pas ... exactement la même sémantique" faites-vous référence au fait qu'en C# le paramètre commence non initialisé et doit être définitivement assigné avant que la fonction ne retourne? –