在我的 c# 应用程序中,我在回调/委托中收到指向 c++ 结构的指针。我不确定是否class
可以做到这一点,但只是将 c++ 指针转换为适当的 c# 结构可以正常工作,所以我使用 c# 结构来存储数据。
现在我想传递对 struct 的引用以进行进一步处理
- 我不能使用
class
,因为它可能不会完美地“映射”到 c++ 结构。 - 我不想复制 struct 以获得更好的延迟
我怎样才能做到这一点?
这个例子演示了 struct 是按值传递的,而不是按引用传递的:
using System;
namespace TestStruct
{
struct s
{
public int a;
}
class Program
{
static void Main(string[] args)
{
s s1 = new s
{
a = 1
};
Foo(s1);
Console.WriteLine("outer a = " + s1.a);
}
private static void Foo(s s1)
{
s1.a++;
Console.WriteLine("inner a = " + s1.a);
}
}
}
输出是:
inner a = 2
outer a = 1