ref and out in C++/CLI

2019-03-12 07:04发布

问题:

I know that the C++/CLI code

void foo(Bar^% x);

transforms into

Void foo(ref Bar x);

What is the C++/CLI code that becomes

Void foo(out Bar x);

?

回答1:

You can use the OutAttribute:

using namespace System::Runtime::InteropServices;    
void foo([Out] Bar^% x); 


回答2:

There is no such specific syntax in C++/CLI. I think you can get fairly close by adding the OutAttribute to modify the parameter. But I'm not sure that achieves the exact same semantics as C# out.

The concept of out is for the most part limited to C#. The CLR really only sees ref parameters. The out concepts is achieved via a mod opt I believe and most languages ignore it.