Подтвердить что ты не робот

Ref и out в С++/CLI

Я знаю, что код С++/CLI

void foo(Bar^% x);

преобразуется в

Void foo(ref Bar x);

Что такое код С++/CLI, который становится

Void foo(out Bar x);

?

4b9b3361

Ответ 1

Вы можете использовать OutAttribute:

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

Ответ 2

В С++/CLI такого синтаксиса нет. Я думаю, вы можете приблизиться, добавив OutAttribute, чтобы изменить параметр. Но я не уверен, что достигает той же семантики, что и С# out.

Понятие out по большей части ограничено С#. CLR действительно видит только параметры ref. Концепции out достигаются с помощью mod opt, я верю, и большинство языков игнорируют его.