c#在这里输入一个结构吗?
struct S { int x; }
void foo(ref S s) { s.x = 1; }
main {
var s = new S();
foo(ref s); <-- boxing??
}
我听过关于类中结构的奇怪内容。这里有拳击吗?这是通过会员的副本吗?
class C { S s; }
main {
var c = new C();
foo(ref c.s); <-- boxing here?? copy here???
}
void foo(ref S s) { s.x = 1; }
答案 0 :(得分:4)
如果您阅读ref
的文档,那么Struct
是值类型
不要将通过引用传递的概念与概念相混淆 参考类型。这两个概念不尽相同。方法参数 可以通过ref修改,无论它是值类型还是a 参考类型。 传递时没有值类型的装箱 参考。
这里解释一下ref正在做什么。
ref关键字导致参数通过引用传递,而不是通过引用传递 值。通过引用传递的效果是任何改变 被调用方法中的参数反映在调用方法中。