在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语言之间互操作性的属性用法。