一尘不染

对于C#中的引用类型变量,“ ref”有什么用?

c#

我了解,如果我将值类型(intstruct等)作为参数(没有ref关键字)传递,则该变量的副本将传递给方法,但是如果我使用ref关键字,则会传递对该变量的引用,不是新的。

但是对于引用类型(如类),即使没有ref关键字,引用也会传递给方法,而不是副本。那么ref关键字与引用类型的用法是什么?


举个例子:

var x = new Foo();

以下内容有什么区别?

void Bar(Foo y) {
    y.Name = "2";
}

void Bar(ref Foo y) {
    y.Name = "2";
}

阅读 511

收藏
2020-05-19

共1个答案

一尘不染

您可以更改foo使用的要点y

Foo foo = new Foo("1");

void Bar(ref Foo y)
{
    y = new Foo("2");
}

Bar(ref foo);
// foo.Name == "2"
2020-05-19