他们呢?或者为了加快我的程序,我应该通过引用传递它们吗?
答案 0 :(得分:183)
引用按值传递。
.NET中的数组是堆上的对象,因此您有一个引用。该引用按值传递,这意味着调用者将看到对数组的内容的更改,但重新分配数组将不会:
void Foo(int[] data) {
data[0] = 1; // caller sees this
}
void Bar(int[] data) {
data = new int[20]; // but not this
}
如果添加ref
修饰符,引用将通过引用传递 - 并且调用者将看到上面的更改。
答案 1 :(得分:7)
它们按值传递(所有参数既不是ref也不是out),但值是对对象的引用,因此它们通过引用有效传递。
答案 2 :(得分:0)
是的,它们默认在C#中通过引用传递。除了值类型之外,C#中的所有对象都是。为了更精确一点,它们通过“按价值参照”传递;也就是说,您在方法中看到的变量的值是对传递的原始对象的引用。这是一个很小的语义点,但有时候很重要。
答案 3 :(得分:0)
(1) 没有人明确回答 OP 的问题,所以这里是:
(2) 给大家的好建议:
(3) 重要,尚未提及: