[英]pass c# struct by reference?
在我的c#應用程序中,我在callback / delegate中收到指向c ++ struct的指針。 我不確定class
可以做到這一點,但只是將c ++指針轉換為適當的c#struct工作正常,所以我使用c#struct來存儲數據。
現在我想傳遞對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
聽起來你只想使用ref
通過引用傳遞結構:
private static void Foo(ref s s1)
{
s1.a++;
Console.WriteLine("inner a = " + s1.a);
}
在通話現場:
Foo(ref s1);
有關更多詳細信息,請參閱我在C#中傳遞參數的文章 。
請注意,除了互操作之外,我通常強烈建議不要使用像這樣的可變結構。 我可以理解這里的好處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.