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