我对此感到非常困惑 - 我知道如何在 VB、非托管 C++ 和 C# 中执行此操作,但由于某种原因,我不能接受 C++ 中托管类型的 ref 变量。我敢肯定有一个简单的答案,真的 - 但这是 C# 等价物:
myClass.myFunction(ref variableChangedByfunction);
我试过 C++ 指针 - 没有骰子。我试过 ref 关键字。没有骰子。我尝试了[out]
关键字。没用。
我也找不到任何可以清楚地解释我的问题的文档。
在函数声明中,您需要在参数名称后使用 % :
bool Importer::GetBodyChunk(String^% BodyText, String^% ChunkText)
然后你照常传入变量。
使用 ^ 而不是 *
只是为了让它更清楚一点:
引用类型的参数(例如 System::String)必须用^
较新的 C++/CLI 语法表示。这告诉编译器该参数是一个 GC 对象的句柄。
如果您需要跟踪参考(如使用C#ref
或out
在 C# 中),您也需要添加%
。
这里有一个提示:我经常发现使用.NET Reflector查看现有程序集并切换到 C++ 代码样式很有帮助。这可以很好地了解不同 .net 语言之间的互操作性属性的使用。