【问题标题】:ref and out in C++/CLI在 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);

?

【问题讨论】:

    标签: .net c++-cli pass-by-reference


    【解决方案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# 中参数开始时未初始化并且必须在函数返回之前明确分配的事实?
      猜你喜欢
      • 1970-01-01
      • 2017-08-07
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2011-06-21
      • 1970-01-01
      相关资源
      最近更新 更多