Вони? Або щоб пришвидшити мою програму, чи повинен я передавати їх за посиланням?
Вони? Або щоб пришвидшити мою програму, чи повинен я передавати їх за посиланням?
Відповіді:
Посилання передається за значенням .
Масиви в .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 # є, крім типів значень. Якщо бути трохи точнішими, вони передаються "за посиланням за значенням"; тобто значення змінної, яке ви бачите у своїх методах, є посиланням на переданий вихідний об'єкт. Це невеликий смисловий момент, але той, що іноді може бути важливим.