gpt4 book ai didi

c# - 通过引用传递 c# 结构?

转载 作者:IT王子 更新时间:2023-10-29 04:12:38 24 4
gpt4 key购买 nike

在我的 C# 应用程序中,我在回调/委托(delegate)中收到指向 C++ 结构的指针。我不确定 class 是否可以解决问题,但只需将 c++ 指针转换为适当的 c# 结构就可以正常工作,所以我使用 c# 结构来存储数据。

现在我想传递对结构的引用以进行进一步处理

  • 我不能使用 class 因为它可能不会完美地“映射”到 c++ 结构。
  • 我不想复制结构以获得更好的延迟

我该怎么做?


此示例演示结构是按值传递的,而不是按引用传递的:

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

最佳答案

听起来您只想使用 ref 通过引用传递结构:

private static void Foo(ref s s1)
{
s1.a++;
Console.WriteLine("inner a = " + s1.a);
}

在调用站点:

Foo(ref s1);

查看我的 article on parameter passing in C#了解更多详情。

请注意,除了互操作之外,我通常会强烈建议反对使用像这样的可变结构。不过,我可以理解这里的好处。

关于c# - 通过引用传递 c# 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16614704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com