从一个简单的测试中我可以看到,如果你将结构传递给方法,它是按值传递的,但是如果你首先将它分配给一个接口,它是通过引用传递的。
interface IFoo { int Val { get; set; } }
struct Foo : IFoo { public int Val { get; set; } }
void Bar(IFoo foo) { foo.Val = 1; }
Foo foo = new Foo();
IFoo ifoo = new Foo();
Bar(foo);
Bar(ifoo);
Console.WriteLine(foo.Val); // 0, passed by value
Console.WriteLine(ifoo.Val); // 1, passed by ref
所以我的问题是,仍然有一个拳击操作来传递这样的结构吗?