在C#中,引用类型变量“ref”的用法是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (56)

我知道如果我传递一个值类型(intstruct)作为参数,则将该变量的副本传递给该方法,但如果我使用ref关键字对该变量的引用被传递,而不是新的。

但是对于引用类型,就像类一样,即使没有ref关键字,引用将传递给方法,而不是副本。那么,使用ref关键字与引用类型?

例如:

var x = new Foo();

以下几点有什么区别?

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

void Bar(ref Foo y) {
    y.Name = "2";
}
提问于
用户回答回答于

Foo foo = new Foo("1");

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

Bar(ref foo);
// foo.Name == "2"
用户回答回答于

void Swap<T>(ref T x, ref T y) {
    T t = x;
    x = y;
    y = t;
}

var test = new[] { "0", "1" };
Swap(ref test[0], ref test[1]);

扫码关注云+社区