在C ++。net中将引用或者指针传递给托管类型作为参数

时间:2020-03-06 14:44:26  来源:igfitidea点击:

我真的对此感到困惑,我知道如何在VB,非托管C ++和C中做到这一点,但是由于某些原因,我不能接受C ++中托管类型的ref变量。我敢肯定,有一个简单的答案,确实是,但是这里是Cequivalent:

myClass.myFunction(ref variableChangedByfunction);

我试过C ++指针没有骰子。我尝试了ref关键字。没有骰子。我尝试了[out]关键字。没用

我也找不到任何可以清楚说明我的问题的文档。

有任何想法吗?

解决方案

使用^代替*

结果是在函数声明中,我们需要在参数名称后使用%:

bool Importer :: GetBodyChunk(String ^%BodyText,String ^%ChunkText)

然后按常规传递变量。

只是为了使它更清晰一点:

引用类型的参数(例如System :: String)必须在较新的C ++ / CLI语法中以" ^"表示。这告诉编译器该参数是GC对象的句柄。

如果我们需要跟踪参考(例如C#中的ref或者out),则还需要添加

这里有个提示:我经常发现使用.NET Reflector查看现有程序集并切换到C ++代码样式会很有帮助。这样可以很好地了解不同.net语言之间互操作性的属性用法。