Подтвердить что ты не робот

Являются ли массивы или списки, переданные по умолчанию ссылкой в ​​С#?

Они? Или ускорить мою программу, если я передам их по ссылке?

4b9b3361

Ответ 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

Массив - это ссылка. И он передается по значению.