so che il codice C++/CLIref e in C++/CLI
void foo(Bar^% x);
trasforma in
Void foo(ref Bar x);
Qual è il codice C++/CLI che diventa
Void foo(out Bar x);
?
so che il codice C++/CLIref e in C++/CLI
void foo(Bar^% x);
trasforma in
Void foo(ref Bar x);
Qual è il codice C++/CLI che diventa
Void foo(out Bar x);
?
È possibile utilizzare l'OutAttribute:
using namespace System::Runtime::InteropServices;
void foo([Out] Bar^% x);
Non esiste una sintassi specifica in C++/CLI. Penso che puoi essere abbastanza vicino aggiungendo il OutAttribute
per modificare il parametro. Ma non sono sicuro che raggiunga esattamente la stessa semantica di C# out
.
Il concetto di out
è per la maggior parte limitato a C#. Il CLR vede solo i parametri ref
. I concetti out
si ottengono tramite un mod opt e la maggior parte delle lingue lo ignorano.
Yup, lo stesso per VB.NET –
È la sintassi pass-by-di riferimento con 'OutAttribute' applicato al parametro come dici tu. Crea esattamente gli stessi metadati dei parametri di C# 'out'. Con "non ... la stessa identica semantica" ti riferisci al fatto che in C# il parametro inizia non inizializzato e deve essere assegnato definitivamente prima che la funzione ritorni? –