Они? Или ускорить мою программу, если я передам их по ссылке?
Являются ли массивы или списки, переданные по умолчанию ссылкой в С#?
Ответ 1
ссылка передается по значению.
Массивы в .NET являются объектом в куче, поэтому у вас есть ссылка. Эта ссылка передается по значению, что означает, что изменения в содержании массива будут видны вызывающим, но переназначение не будет:
void Foo(int[] data) {
data[0] = 1; // caller sees this
}
void Bar(int[] data) {
data = new int[20]; // but not this
}
Если вы добавите модификатор ref
, ссылка передается по ссылке - и вызывающий может увидеть либо изменение выше.
Ответ 2
Они передаются по значению (как и все параметры, которые не являются ни ref, ни out), но это значение является ссылкой на объект, поэтому они эффективно передаются по ссылке.
Ответ 3
Да, они передаются по ссылке по умолчанию в С#. Все объекты в С#, кроме типов значений. Чтобы быть более точными, они передаются "по ссылке по значению"; то есть значение переменной, которое вы видите в ваших методах, является ссылкой на исходный переданный объект. Это небольшая семантическая точка, но иногда это может быть важно.
Ответ 4
Массив - это ссылка. И он передается по значению.