在 C++/CLI 中引用和输出
Posted
技术标签:
【中文标题】在 C++/CLI 中引用和输出【英文标题】:ref and out in C++/CLI 【发布时间】:2011-03-31 15:56:57 【问题描述】:我知道 C++/CLI 代码
void foo(Bar^% x);
变成
Void foo(ref Bar x);
变成什么C++/CLI代码
Void foo(out Bar x);
?
【问题讨论】:
【参考方案1】:你可以使用 OutAttribute:
using namespace System::Runtime::InteropServices;
void foo([Out] Bar^% x);
【讨论】:
【参考方案2】:C++/CLI 中没有这样的特定语法。我认为您可以通过添加OutAttribute
来修改参数来相当接近。但我不确定它是否实现了与 C#out
完全相同的语义。
out
的概念在很大程度上仅限于 C#。 CLR 真的只看到ref
参数。 out
概念是通过我相信的 mod opt 实现的,大多数语言都忽略它。
【讨论】:
这是传递引用语法,如您所说,OutAttribute
应用于参数。它创建与 C# out
参数完全相同的元数据。 “不...完全相同的语义”是指在 C# 中参数开始时未初始化并且必须在函数返回之前明确分配的事实?以上是关于在 C++/CLI 中引用和输出的主要内容,如果未能解决你的问题,请参考以下文章
在 x86 中编译引用 C++/CLI DLL 的 C# 项目时,MSBuild 无法构建