我了解,如果我将值类型(int,struct等)作为参数(没有ref关键字)传递,则该变量的副本将传递给方法,但是如果我使用ref关键字,则会传递对该变量的引用,不是新的。
int
struct
ref
但是对于引用类型(如类),即使没有ref关键字,引用也会传递给方法,而不是副本。那么ref关键字与引用类型的用法是什么?
举个例子:
var x = new Foo();
以下内容有什么区别?
void Bar(Foo y) { y.Name = "2"; }
和
void Bar(ref Foo y) { y.Name = "2"; }
您可以更改foo使用的要点y:
foo
y
Foo foo = new Foo("1"); void Bar(ref Foo y) { y = new Foo("2"); } Bar(ref foo); // foo.Name == "2"