.net C++/CLI中的ref和out

qaxu7uf2  于 2023-01-22  发布在  .NET
关注(0)|答案(3)|浏览(125)

我知道C++/CLI代码

void foo(Bar^% x);

转化为

Void foo(ref Bar x);

什么是C++/CLI代码

Void foo(out Bar x);

8zzbczxx

8zzbczxx1#

您可以使用OutAttribute:

using namespace System::Runtime::InteropServices;    
void foo([Out] Bar^% x);
6ovsh4lw

6ovsh4lw2#

在C++/CLI中没有这样的特定语法。我认为您可以通过添加OutAttribute来修改参数来获得相当接近的语法。但我不确定这是否实现了与C#out完全相同的语义。
out的概念在很大程度上局限于C#。CLR实际上只看到ref参数。我相信out的概念是通过mod opt实现的,大多数语言都忽略了它。

polkgigr

polkgigr3#

“Sorry for my英语”在C++中有“指针”,例如:

int a = 0;
int *b = &a;  // '*' means that it's a pointer variable, '&' - give you a place in memory there has an object 'a'.
*b = 1; // '*' then if you want to get information which in this memory, you need to put the '*'.

函数示例

void Foo(int *pa) 
{
   (*pa)++;
}
void main()
{
   int a = 0;
   Foo(&a);
}

正如您所看到的,它的工作原理类似于C#中的ref和out热键

相关问题