我明白,如果我传递一个值类型(int
, struct
等)作为参数(没有ref
关键字),该变量的副本将传递给方法,但如果我使用ref
关键字,则传递的是对该变量的引用,而不是一个新变量。
但是对于引用类型,就像类一样,即使没有ref
关键字,也会将引用传递给方法,而不是副本。那么引用类型的ref
关键字有什么用呢?
举个例子:
var x = new Foo();
以下两种有什么区别?
void Bar(Foo y) {
y.Name = "2";
}
而且
void Bar(ref Foo y) {
y.Name = "2";
}