Mar*_*ell 193
该参考被传递通过值.
.NET中的数组是堆上的对象,因此您有一个引用.该引用按值传递,这意味着调用者将看到对数组内容的更改,但重新分配数组将不会:
void Foo(int[] data) {
data[0] = 1; // caller sees this
}
void Bar(int[] data) {
data = new int[20]; // but not this
}
Run Code Online (Sandbox Code Playgroud)
如果添加ref修饰符,则引用将通过引用传递- 并且调用者将看到上面的更改.
Pau*_*ier -1
是的,在 C# 中它们默认通过引用传递。C# 中的所有对象都是,除了值类型。更准确地说,它们是“按值引用”传递的;也就是说,您在方法中看到的变量值是对传递的原始对象的引用。这是一个很小的语义点,但有时却很重要。