ref和out在C++/CLI中

Ale*_* C. 29 .net c++-cli pass-by-reference

我知道C++/CLI代码

void foo(Bar^% x);
Run Code Online (Sandbox Code Playgroud)

变成了

Void foo(ref Bar x);
Run Code Online (Sandbox Code Playgroud)

什么是C++/CLI代码

Void foo(out Bar x);
Run Code Online (Sandbox Code Playgroud)

Yoc*_*mer 41

您可以使用OutAttribute:

using namespace System::Runtime::InteropServices;    
void foo([Out] Bar^% x); 
Run Code Online (Sandbox Code Playgroud)


Jar*_*Par 8

C++/CLI中没有这样的特定语法.我认为你可以通过添加OutAttribute修改参数来相当接近.但我不确定它是否实现了与C#完全相同的语义out.

这个概念out在很大程度上仅限于C#.CLR真的只看到ref参数.该out概念通过MOD选择,我相信大多数语言忽略它实现.