¿Las matrices o listas se pasan por defecto por referencia en c #?

¿Ellos? ¿O para acelerar mi progtwig si los paso por referencia?

La referencia se pasa por valor .

Las matrices en .NET son objeto en el montón, por lo que tiene una referencia. Esa referencia se pasa por valor, lo que significa que el llamador verá los cambios en el contenido de la matriz, pero reasignar la matriz no:

void Foo(int[] data) { data[0] = 1; // caller sees this } void Bar(int[] data) { data = new int[20]; // but not this } 

Si agrega el modificador de referencia , la referencia se pasa por referencia , y la persona que llama vería cualquiera de los cambios anteriores.

Se pasan por valor (como lo son todos los parámetros que no son ni ref ni out), pero el valor es una referencia al objeto, por lo que se pasan efectivamente por referencia.

Sí, se pasan por referencia por defecto en C #. Todos los objetos en C # son, a excepción de los tipos de valor. Para ser un poco más precisos, se pasan “por referencia por valor”; es decir, el valor de la variable que ve en sus métodos es una referencia al objeto original pasado. Este es un pequeño punto semántico, pero que a veces puede ser importante.